【问题标题】:socket io emit failed callbacksocket io 发出失败的回调
【发布时间】:2016-03-31 07:08:58
【问题描述】:

有没有办法知道socket io发出失败和成功,比如ajax回调方法:onSuccess,onError? 对于套接字 io 发射,我只找到:

socket.emit('publish', {message:'test message'},function (data) { 警报(“”)})

这个回调只有在服务端发送ack响应的时候才会被调用,但是不能应用于这种情况:

在向服务器发送消息的时候,网络不好或者连接断开,说明服务器没有收到这个消息,所以不调用客户端回调函数。

我想要的是:

当我调用socket io emit时,如果失败,我想重试3次。

【问题讨论】:

  • 如果您想模仿 HTTP 行为,您必须自己编写该机制,因为它不是 websocket 工作的一部分。但是使用setTimeout 和一些标志可以很容易地完成。
  • 你试过使用'error'事件回调吗?

标签: callback socket.io emit


【解决方案1】:

我知道这是一篇旧帖子,但以防万一有人对此仍有问题。

var socket = new io.connect('http://localhost:3000', {
    'reconnection': true,
    'reconnectionDelay': 1000,
    'reconnectionDelayMax' : 5000,
    'reconnectionAttempts': 3
});
socket.on('connect_error', function() {
    console.log('Connection failed');
});
socket.on('reconnect_failed', function() {
    // fired only after the 3 attemps in this example fail
    console.log('Reconnection failed');
});

更多信息在这里 -> https://socket.io/docs/client-api/#manager-reconnectionAttempts-value

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 2023-04-05
    • 2020-12-21
    • 2019-01-08
    • 1970-01-01
    • 2015-03-23
    • 2011-02-21
    • 2020-09-14
    • 2019-10-10
    相关资源
    最近更新 更多