こんばんみ!洋梨🍐です。今回は前回の続きです。
データーベースに情報を登録する
前回は情報を登録済みの情報を取得するだけだったので、今回はUnityからサーバーにスコア(情報)を登録できるようにしていきたいと思います。
リクエスト構造(JSON)
今回サーバーに送信するリクエスト形式は次のようにしました。
{ id , action, name , score }
// id : ユーザー識別用ID
// action : 操作内容(例:追加 = ADD)
// name : ユーザー名
// score : スコア
リクエストを処理する(サーバー側)
まずはNode.jsでリクエストを処理するためのプログラムを作成します。
今回は追加(ADD)リクエストが来たらとりあえず何も考えずデーターベースに登録するとします。なお、リクエスト先は /post とします。
app.post("/Post",function(req,res,nex){
let b = req.body;
console.log("POST Receive. ["+b+"]");
database_action(res,b.id,b.action,b.name,b.score);
})
function database_action(res,id,action,name,score){
switch(action){
case "ADD":
console.log("Run Query : INSERT INTO RANK VALUES("+id+","+name+","+score+",now())");
con.query("INSERT INTO RANK VALUES('"+id+"','"+name+"',"+score+",now())",function(e,r){
if(e) response(res,"ERROR",null);
else response(res,"OK",null);
})
break;
}
}
リクエストを送信する(Unity)
テストデーターとして
{ id:”a003” , action:”ADD” , name:”MyUser” , score:300 }
を送信するとします。
public void OnPushPost()
{
var send = "{ \"id\":\"a003\" , \"action\" : \"ADD\" ,\"name\":\"MyUser\" ,\"score\": 300 }";
var bytes = System.Text.Encoding.UTF8.GetBytes(send);
var req = WebRequest.Create("http://localhost:3000/Post");
req.Method = "POST";
req.ContentType = "application/json; charset=utf-8";
req.ContentLength = bytes.Length;
req.Timeout = 3000;
var reqStm = req.GetRequestStream();
reqStm.Write(bytes, 0, bytes.Length);
var res = req.GetResponse();
using (Stream stm = res.GetResponseStream())
using (StreamReader str = new StreamReader(stm))
{
string json = str.ReadToEnd();
Debug.Log(json);
}
Debug.Log("Send POST:" + bytes.Length);
reqStm.Close();
res.Close();
}
実行してみるとデーターベースに登録されているのがわかると思います。
これでUnityからサーバーに登録もできるようになり、ランキング表示機能として使えるようになりました👼
ここまで読んでくれてありがとうございました!!
ホームページでは他にも
・様々な記事や作った作品および過程
・ソースコード、素材ファイル
・あらゆる”モノ”の作り方
などなど随時、記事や作品を新規公開・更新していますので是非見ていってくださいね!見ていただけると本当に嬉しいです!