如何在socket.io中发生互联网故障(互联网丢失)时保持重新连接?

时间:2019-07-01 05:34:05

标签: node.js react-native socket.io

我有一个简单的聊天应用程序,使用 react-native,nodejs和socket.io ,它们都运行良好。

但是在某些情况下无法正常运行

1.打开应用程序

  • Internet 断开连接,然后重新连接
  • 从移动数据到wifi的
  • Internet 获得更改,反之亦然。
  • 电话进入睡眠状态并唤醒

2。当应用程序关闭时。

  • 我们在没有Internet连接的情况下打开应用程序,并且在应用程序打开时连接到Internet。

我的期望: 我希望在上述情况下也能正常工作。

服务器:

const onlineusers = {};
io.on('connection', function(socket) {
    socket.on('online', user => {
     onlineusers[user] = cs.id;
     io.emit('online', onlineusers);
    });
    socket.on('message', data => {
      socket.broadcast.to(data.userid).emit('message', data);
    });
});

客户:

this.socket = io('domainname.com:5412', { transports: ['websocket'] });
if(this.socket.connected) {

    this.socket.emit("online", this.myuserid);

    this.socket.on('online', users => {
      console.log('online users', users);
    });

    this.socket.on('connect', ()=> {
      this.socket.emit("online", this.myuserid);
    });

    this.socket.on('message', message => {
      console.log(message);
    });

    this.socket.on('disconnect', reason => {
      if(reason==='io server disconnect') this.socket.connect();
    });
}

sendMessage = message => {
  this.socket.emit('message', message);
}

0 个答案:

没有答案