我看到有几个类似的主题,但我找不到我的答案。
我正在制作安卓应用程序,我想使用 Node 作为服务器进行实时通信。
我真的无法让它工作。
可能我做错了很多事情,但我想尝试理解。
我的服务器很简单
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!");
});
这行得通...我用一个网络应用程序试过这个,我可以连接。
但是我不能用 java..
我试过 kryonet但我得到一个异常,如“已连接但注册超时”
我试过 weberknecht我收到“在创建 ws://184.xxxxxx:8080 的套接字时出错”
我试过 TooTallNate ,不走运,它只是调用 onClose 方法。
我试过 jWebSocket但我无法让它工作......
所以我在这里寻求帮助,有人知道如何完成这项工作吗?有什么建议吗?
附: 对于 TooTallNate,我正在使用这样的东西:
Net net = new Net(new URI("ws://184.xxxxxx:8080"),WebSocketDraft.DRAFT76);
问题可能出在这里吗?
更新: 我处理了这个!睡个好觉后,我有了一个想法,我使用的是 socket.io,坏主意……现在我使用 Node Websocket Server与 weberknecht .服务器如下所示:
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);
和客户:
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();
}
最佳答案
我是 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 之类的东西。
问候, 米歇尔·史密斯
关于java - Android 到 node.js 的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499543/