【问题标题】:Socket.IO disconnect fires before connectionSocket.IO 断开连接前触发
【发布时间】:2019-06-09 00:07:50
【问题描述】:

我通过发送包含其凭据的 socket.io 消息让客户在聊天中进行授权。

我担心的是,有时 Socket.IO 客户端会在授权完成之前触发断开连接事件。当客户端发送身份验证消息并立即断开连接时,可能会发生这种情况。

由于身份验证消息会触发获取 API 的回调,因此它的执行速度总是较慢,并且在触发“断开连接”事件之后,因此应用程序允许某人进行聊天,即使他们已经离开。

有没有办法确保“断开”事件最后被触发?

 socket.on('authorize', data => {
    
    checkAuth()
    .then(()=> addTochat()) //this resolves after disconnect event is fired
    
 
 })
 
 
  socket.on('disconnect', data => {
  
  removeFromChat()
 
 })
 

【问题讨论】:

  • 请提供代码。

标签: node.js socket.io


【解决方案1】:

您可以在收到disconnect 事件后设置一个标志,并在允许断开连接的用户聊天之前在身份验证回调中检查该标志。

这样,即使之前触发了断开事件,您的应用也会尊重该事件。

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 2014-01-08
    • 2018-01-28
    • 2016-09-20
    • 2014-04-03
    • 2014-03-08
    • 2012-11-09
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多