【问题标题】:Java/Android front-end client and node js backend server?Java/Android 前端客户端和节点 js 后端服务器?
【发布时间】:2016-05-30 00:13:09
【问题描述】:

可以这样做吗?或者,我应该问的问题,是否可行?

还是坚持使用 Java/Android 前端和 Java 后端服务器会更好?

node js 后端对于多人游戏是否实用?或者可能只是用于不需要太多的 Web 应用程序

如果它 (java-nodejs) 对多人游戏很实用,那么如何让 java 客户端能够与 node js 服务器通信?

【问题讨论】:

    标签: javascript java android node.js


    【解决方案1】:

    如果您正在构建 API,则不必担心编写它的语言,与之通信的方式将保持不变(UDP/HTTP/WS 请求)。 不过,您正在创建一个多人游戏,因此您需要为后端提供良好的性能。

    NodeJS 很好,非常好! Erlang 更好;)

    【讨论】:

    • 我不知道如何制作 API,我更多的是考虑使用节点 JS 的某种后端引擎并只是实现它。比如你有 Unity3d 用于前端游戏,即使它使用 C#,你实际上并没有自己制作引擎,你使用它
    • 是的,但是当你想将你的玩家相互连接时(即使你使用引擎),你必须实现一个网络服务器或使用网络服务.. ?
    • 我不知道,你不会直接连接到服务器,然后一切都在那里完成吗?玩家无需直接相互连接
    • 是的,每个玩家都连接到服务器,服务器共享信息。因此,如果您不希望您的用户出现延迟,服务器必须又快又强大,
    【解决方案2】:

    是的,这是可行的。 Node 在处理请求方面非常高效和快速。由于它适用于基于事件的模型,因此非常适合服务器端。 如果您使用 Android 和 NodeJs 作为服务器端,我可以提供帮助:

    您可以在 Android 中使用 Volley 发出 json POSTGET 请求。

    对于 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);
    

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      相关资源
      最近更新 更多