7

我正在开发基于回合的 Android 游戏,并且我选择 Nodejs 作为服务器端。我已经探索了大约两周的时间,如何从 Android 客户端与 Nodejs 服务器进行通信。有什么办法可以在两者之间进行交流。

如果有人对这样的项目有任何经验,请帮助我。

4

3 回答 3

1

根据您的游戏在客户端和服务器之间通信的要求,有很多这样的选择。例如,在此处查找“Android 的 TCP 客户端”会显示这样的答案。如果服务器和客户端之间的快速更新很重要,那么 UDP 是一种选择,如果您的游戏可以处理中间丢失一些数据包。

除了 TCP/UDP 之外,您还拥有诸如Android 的WebSockets 之类的东西。

于 2012-09-17T06:42:49.583 回答
0

结合 Android 和 nodejs 是没有问题的。首先,您必须定义一个中间件。您可以使用 REST-Webservices 或任何其他技术在节点服务器和 android 客户端之间进行通信。有许多标准的 API 和协议。我会使用 Websocket 进行通信。您可以在此处找到支持 WebSocket 的 Android / Node.js API:

于 2012-09-17T08:50:59.323 回答
0

您可以在 Android 中使用Volley来生成 jsonPOSTGET请求。

而对于 NODE JS,您可以使用 node 的内置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 代码,您可以使用 volley 执行此操作:

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);
于 2018-10-14T17:43:01.073 回答