我有一个NodeJs / Socket.io服务器。 我有一个Android客户端,想要创建通信。
连接有效,从Android客户端发送消息有效,我得到了回复。
有时服务器的答案没有到达客户端:
Android : socket.emit("setPosition",loc);
Server : socket.on('setPosition',function(loc){
...
socket.emit('map',obj);
...
})
当我用HTML例子测试服务器时,一切正常,但是对于android,我几乎"从来没有收到消息
socket.emit('map',obj);
我正在使用此客户端:https://github.com/Gottox/socket.io-java-client
我无法找到任何已知错误,有人有想法吗?
编辑:这是套接字的android配置。自从我收到"有时"答案。
socket.connect(new IOCallback() {
@Override
public void on(String event, IOAcknowledge ack, Object... args) {
System.out.println("" + args[0]);
if("map".equals(event) && args.length > 0){
updateMap(args[0]);
// TODO Not working
}
}
@Override
public void onMessage(JSONObject json, IOAcknowledge ack) {
System.out.println("onMessage");
}
@Override
public void onMessage(String data, IOAcknowledge ack) {
System.out.println("onMessage");
}
@Override
public void onError(SocketIOException socketIOException) {
System.out.println("" + socketIOException.getCause());
}
@Override
public void onDisconnect() {}
@Override
public void onConnect() {
socket.emit("setToken", token);
}
});
我还要添加我在服务器上监控并正确发送消息
debug: xhr-polling writing 5:::{"name":"map","args":[...]}
编辑2:
我在这个问题上做了一些测试,并有一些新的信息:
如果我调用1 socket.emit(" setPosition",obj),我什么都没得到。
如果我连续调用2个socket.emit(" setPosition",obj),那么我每次都会得到1个答案。
如果我连续调用n socket.emit(" setPosition",obj),那么我每次都会得到n-1个答案。
所以我想知道连接是否存在问题,以及当我打电话来获得答案时它是否保持打开的时间足够长。 我还检查了"连接"是开放的。
如果有人有想法:)
谢谢, 伊万