【发布时间】:2016-05-30 00:13:09
【问题描述】:
可以这样做吗?或者,我应该问的问题,是否可行?
还是坚持使用 Java/Android 前端和 Java 后端服务器会更好?
node js 后端对于多人游戏是否实用?或者可能只是用于不需要太多的 Web 应用程序
如果它 (java-nodejs) 对多人游戏很实用,那么如何让 java 客户端能够与 node js 服务器通信?
【问题讨论】:
标签: javascript java android node.js
可以这样做吗?或者,我应该问的问题,是否可行?
还是坚持使用 Java/Android 前端和 Java 后端服务器会更好?
node js 后端对于多人游戏是否实用?或者可能只是用于不需要太多的 Web 应用程序
如果它 (java-nodejs) 对多人游戏很实用,那么如何让 java 客户端能够与 node js 服务器通信?
【问题讨论】:
标签: javascript java android node.js
如果您正在构建 API,则不必担心编写它的语言,与之通信的方式将保持不变(UDP/HTTP/WS 请求)。 不过,您正在创建一个多人游戏,因此您需要为后端提供良好的性能。
NodeJS 很好,非常好! Erlang 更好;)
【讨论】:
是的,这是可行的。 Node 在处理请求方面非常高效和快速。由于它适用于基于事件的模型,因此非常适合服务器端。 如果您使用 Android 和 NodeJs 作为服务器端,我可以提供帮助:
您可以在 Android 中使用 Volley 发出 json POST 或 GET 请求。
对于 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);
【讨论】: