【问题标题】:Detecting Socket.IO message delivery error on client side在客户端检测 Socket.IO 消息传递错误
【发布时间】:2016-11-27 06:02:22
【问题描述】:

我们需要更新客户端 UI 以指示消息无法传递。消息传递失败时,如何让 Socket.IO JS 客户端直接调用自定义回调?例如,类似:

socket.emit("event", data).onError(myCallback);

我知道 Socket.IO 提供了确认发送成功的 Ack 机制。因此,如果在一定时间后未调用 ack,则可以使用调用失败回调的处理程序设置一个计时器。但这似乎不是最好的方法。

还有 Socket.IO 提供的错误事件,但它没有提供有关哪个发射导致错误的信息。

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    不幸的是,没有办法从回调中获取错误,唯一的方法是确实创建自己的超时:

    var timeoutId = setTimeout(timeoutErrorFn, 500);
    
    var acknCallbackFn = function(err, userData){
      clearTimeout(timeoutId)
      //manage UserData
    }
    
    socket.emit('getUserData', acknCallbackFn);
    

    Source of the code

    关于这个还有另一个问题,open

    所以暂时你必须坚持手动设置超时。

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 2013-11-22
      • 1970-01-01
      相关资源
      最近更新 更多