NodeJS,Socket.io
想象一下,有2个用户U1和U2,通过Socket.io连接到应用程序.算法如下:
我想我明白为什么会这样:
如何防止这种数据丢失?我必须使用hearbeats,因为我没有人永远挂在应用程序中.此外,我仍然必须重新连接,因为当我部署新版本的应用程序时,我希望零停机时间.
PS我称之为"消息"的东西不仅仅是我可以存储在数据库中的文本消息,而是有价值的系统消息,必须保证交付,或UI搞砸了.
谢谢!
我已经有了一个用户帐户系统.而且,我的申请已经很复杂了.添加离线/在线状态无济于事,因为我已经有了这种东西.问题不同了.
检查第2步.在这一步我们技术上不能说U1是否脱机,他只是失去连接让我说2秒,可能是因为互联网不好.所以U2给他发了一条消息,但U1没有收到它,因为互联网仍在为他服务(步骤3).需要步骤4来检测离线用户,假设超时为60秒.最后,在另一个10秒内,U1的互联网连接正常,他重新连接到socket.io.但来自U2的消息在空间中丢失,因为服务器U1在超时时断开连接.
这是问题,我不是100%交付.
在必要时断开连接或/和连接flush {}
//服务器const pendingEmits = {};
socket.on('reconnection',()=> resendAllPendingLimits); socket.on('confirm',(emitID)=> {delete(pendingEmits [emitID]);});
// Client socket.on('something',()=> {socket.emit('confirm',emitID);});