NodeJS - Socket.io - Android:未收到所有消息

时间:2014-05-20 09:21:14

标签: android node.js socket.io

我有一个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个答案。

所以我想知道连接是否存在问题,以及当我打电话来获得答案时它是否保持打开的时间足够长。 我还检查了"连接"是开放的。

如果有人有想法:)

谢谢, 伊万

0 个答案:

没有答案