私はターン ベースの Android ゲームに取り組んでおり、サーバー側に Nodejs を選択しました。Android クライアント側から Nodejs サーバーに通信する方法を 2 週間ほど調べてきました。両者の間で通信する方法はありますか。
誰かがそのようなプロジェクトの経験があれば、親切に助けてください。
私はターン ベースの Android ゲームに取り組んでおり、サーバー側に Nodejs を選択しました。Android クライアント側から Nodejs サーバーに通信する方法を 2 週間ほど調べてきました。両者の間で通信する方法はありますか。
誰かがそのようなプロジェクトの経験があれば、親切に助けてください。
ゲームがクライアントとサーバー間の通信に必要なものに応じて、このようなものには多くのオプションがあります。たとえば、ここで「Android 用の TCP クライアント」を検索すると、次のような回答が表示されます。サーバーとクライアントの間で高速な更新が重要な場合、ゲームが途中でいくつかのパケットの損失に対処できる場合は、UDP が 1 つの選択肢になります。
TCP/UDP 以外にも、Android 用のWebSocketなどがあります。
Android と nodejs の組み合わせは問題ありません。まず、ミドルウェアを定義する必要があります。ノード サーバーと Android クライアント間の通信には、REST-Webservices またはその他のテクノロジを使用できます。多くの標準 API とプロトコルがあります。通信には Websocket を使用します。WebSocket をサポートする Android / Node.js API は、次の場所にあります。
Android でVolleyを使用して、jsonPOST
またはGET
リクエストを作成できます。
また、NODE JS の場合、ノードの組み込みhttp
モジュールを使用して単純な HTTP サーバーを作成し、req オブジェクトからデータを受け取ることができます。
const http=require('http');
const stringDecoder=require('string_decoder').StringDecoder;
var httpServer=http.createServer(function(req,res){
unifinedServer(req,res);
});
//Just another method.
var unifinedServer=function(req,res){
var decoder=new stringDecoder('utf-8');
var buffer='';
//reading the post data.
req.on('data',function(data){
buffer+=decoder.write(data);
});
//Reading of data is completed.
req.on('end',function(){
buffer+=decoder.end();
// Do what ever you want to do with the POST data.
});
}
//The Server is listening on a specific port.
httpServer.listen(7000,function(){
console.log("Server is now listening on Port..."+7000);
});
Android コードの場合、ボレーでこれを行うことができます。
String url = "http://example.com";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
(Request.Method.POST, url, postJsonObject, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
mTextView.setText("Response: " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO: Handle error
}
});
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);