我看到有几个类似的主题,但我找不到我的答案。
我正在制作一个Android应用程序,并且想要使用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!");
});
这个可以用……我用一个Web应用程序试过,我可以连接。
但是我用Java就不行……
我试过 kryonet 但是我会得到一个异常,如“已连接但注册超时”
我试过 weberknecht 我得到一个“在创建套接字到ws://184.xxxxxx:8080时出错”
我试过 TooTallNate,没有成功,它只调用了 onClose 方法。
我试过 jWebSocket 但我无法让它工作……
所以我在这里请求帮助,有人知道如何完成这个吗?有什么建议吗?
P.S. 对于 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();
}