Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 如何在客户端套接字超时后重新建立事件_Javascript_Reactjs_Socket.io - Fatal编程技术网

Javascript 如何在客户端套接字超时后重新建立事件

Javascript 如何在客户端套接字超时后重新建立事件,javascript,reactjs,socket.io,Javascript,Reactjs,Socket.io,我看到socket.io似乎在不活动后关闭,它会自动断开并再次连接,但不会使用我最初在componentdidmount中连接时建立的回调。由于超时导致的断开连接没有使用我在componenet中为断开连接事件定义的回调。插座的断开和重新连接似乎也不被视为重新连接事件。在断开与非活动的连接后,有没有关于如何重新订阅连接时所需的事件的建议 componentDidMount() { Socket.on("connect", ()=>{ console.log("

我看到socket.io似乎在不活动后关闭,它会自动断开并再次连接,但不会使用我最初在componentdidmount中连接时建立的回调。由于超时导致的断开连接没有使用我在componenet中为断开连接事件定义的回调。插座的断开和重新连接似乎也不被视为重新连接事件。在断开与非活动的连接后,有没有关于如何重新订阅连接时所需的事件的建议

componentDidMount() {

      Socket.on("connect", ()=>{
        console.log("***Successful connection to id ***");

        Socket.emit('subscribe_to_presence',{domain: 'example'});

        Socket.on('presence_status_update',
          (data)=>{
            console.log("User Data", data);
          }
        );

        Socket.on('info',(info)=>{
          console.log("Info",info);
          console.log("Socket is connected?", Socket.socket.connected);

        });



      });



      Socket.on("connect_error", (error)=>{
        console.log("connect error was due to ", error);
      })

      Socket.on("error", (error)=>{
        console.log("General error was due to ", error);
      })

      Socket.on("connection_timeout", ()=>{
        console.log("Connection timeout");
      })

      Socket.on('disconnect', (reason)=>{
        console.log("Reason for disconnect", reason);
      })

  }


当使用socket保持连接打开时,我们会进行ping/pong,这会告诉对方它们仍然在那里。要关闭连接,发送一个简单的“关闭连接”数据包。 我们可以找到一个很好的例子