Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在重新连接到我的socket.io之后,服务器没有收到从我的android设备发送的事件_Javascript_Android_Node.js_Websocket_Socket.io - Fatal编程技术网

Javascript 在重新连接到我的socket.io之后,服务器没有收到从我的android设备发送的事件

Javascript 在重新连接到我的socket.io之后,服务器没有收到从我的android设备发送的事件,javascript,android,node.js,websocket,socket.io,Javascript,Android,Node.js,Websocket,Socket.io,我真的不知道出了什么问题,在安卓手机上,我连接到我的服务器节点js socket.io,所有的事件都成功了。但如果我切断连接并重新激活它。服务器检测到重新连接。但从手机发送到服务器的事件不会被服务器接收 我创建了一个套接字,其参数允许重新连接: private Socket socket; { try { IO.Options opts = new IO.Options(); opts.forceNew = false; opts.reco

我真的不知道出了什么问题,在安卓手机上,我连接到我的服务器节点js socket.io,所有的事件都成功了。但如果我切断连接并重新激活它。服务器检测到重新连接。但从手机发送到服务器的事件不会被服务器接收

我创建了一个套接字,其参数允许重新连接:

private Socket socket;
{
    try {
        IO.Options opts = new IO.Options();
        opts.forceNew = false;
        opts.reconnection = true;
        opts.reconnectionAttempts = Integer.MAX_VALUE;
        opts.reconnectionDelay = 1000;
        opts.reconnectionDelayMax = 5000;
        socket = IO.socket(Constant.URL_SOCKET, opts);
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
}
显然,我没有忘记调用onCreate:

socket.connect();
actionSocket();
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            actionSocket();
        }
    });
    socket.on(Socket.EVENT_RECONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            actionSocket();
        }
    });
在这里,我的侦听器还调用onCreate:

socket.connect();
actionSocket();
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            actionSocket();
        }
    });
    socket.on(Socket.EVENT_RECONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            actionSocket();
        }
    });
actionSocket对应于此函数:

 socket.on("toast", new Emitter.Listener() {
        @Override
        public void call(Object... args) {
             runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
                    Toast.makeText(MainActivity.this, "Toast", Toast.LENGTH_SHORT).show();
                 }
             });
        }
    });
对于测试重新连接,我得到了以下按钮:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        socket.emit("toast", new JSONObject());
    }
});
服务器端:

io.on('connection', function(socket){
    console.log("connection");
    addSocketListeners(socket);
});
和addSocketListeners()

希望我的问题清楚。感谢所有帮助我的人。

试试这个:

off
断开插座时的事件,以及每次连接时的
on
事件

socket.off("toast");
编辑:而不是禁用removeAllListeners:

io.on('connection', function(socket){
    socket.on("disconnect", function(){
        socket.removeAllListeners("toast");
    });
});

真的可以重新连接插座吗?或者你创建了一个新的套接字吗?不,我不是在创建一个新的实例,重新连接确实是可能的。我正在尝试,等等,这项工作与removeAllListeners(“toast”),谢谢!