Android到node.js的通信

Dui*_*101 24 java android websocket node.js

我看到有几个类似的线程,但我找不到我的答案.

我正在制作和Android应用程序,我想使用节点作为服务器进行实时通信.

我真的无法让这个工作.

可能我犯了很多错误,但我想尝试理解.

我的服务器很简单

var http = require('http'),  
io = require('socket.io'),
server = http.createServer(function(req, res){ 
     res.writeHead(200, {'Content-Type': 'text/html'}); 
     res.end(':)'); 
});
server.listen(8080);
var socket = io.listen(server); 
socket.on('connection', function(client){
    client.send("hello");
    console.log("connected!");
});
Run Code Online (Sandbox Code Playgroud)

这工作......我尝试使用网络应用程序,我可以连接.

但我不能用java ..

我尝试了kryonet,但是我得到了一个例外,例如"已连接但注册超时"

我试过weberknecht我在创建socket到ws://184.xxxxxx:8080时遇到"错误"

我试过TooTallNate,没有运气,它只是调用onClose方法.

我试过jWebSocket,但我无法让它工作......

所以我在这里,寻求帮助,有谁知道怎么做到这一点?有什么建议吗?

PS for TooTallNate我使用的是这样的东西:

Net net = new Net(new URI("ws://184.xxxxxx:8080"),WebSocketDraft.DRAFT76);
Run Code Online (Sandbox Code Playgroud)

问题可能在这里吗?

更新:我处理了这个!经过一段美好的睡眠后,我有了这个想法,我使用的是socket.io,糟糕的主意......现在我使用了Node Websocket Serverweberknecht.服务器看起来像这样:

var ws = require("websocket-server");

var server = ws.createServer();

server.addListener("connection", function(client){
    console.log("new connection");
    client.send("aaaaaa");
    client.addListener("message", function(msg){
    });
});

server.listen(8080);
Run Code Online (Sandbox Code Playgroud)

和客户:

try {
    URI url = new URI("ws://184.106.69.64:8080/");
    WebSocket websocket = new WebSocketConnection(url);
    websocket.setEventHandler(new WebSocketEventHandler() {
        public void onOpen(){
            System.out.println("--open");
        }    
        public void onMessage(WebSocketMessage message){
            System.out.println("--received message: " + message.getText());
        }   
        public void onClose(){
            System.out.println("--close");
        }
    });

    websocket.connect();
    websocket.send("hello world");
}
catch (WebSocketException wse) {
    wse.printStackTrace();
}
catch (URISyntaxException use) {
    use.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

小智 10

我是node-websocket-server(nws)的作者,我很确定node-websocket-server工作和socket.io的原因不是由于每个的实现.NWS将自动协商使用正确的草案,并且它有希望90-100%符合76和75的草案.

至于socket.io,我不能评论太多,但最后我看,它的websocket实现是相当差的实现.

我目前正在开发一个名为node-websocket-protocol的项目,它将能够被socket.io,faye等用于为他们提供真正可靠和兼容的websocket实现.这也将取代2.0.0版本中node-websocket-server中的当前实现.

作为旁注,如果你不想托管自己的websocket服务器,你可以看看使用Pusher.com,他实际上是我的雇主.

[更新]至于websockets是否是适合您的应用程序的最合适的技术选择,是您的应用程序需要什么类型的数据和交互.在移动设备上,如果您只是发送推送通知,最好使用urbanairship或notifio之类的东西.

此致,米歇尔史密斯