socket io 发出失败的回调
Posted
技术标签:
【中文标题】socket io 发出失败的回调【英文标题】:socket io emit failed callback 【发布时间】: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'事件回调吗?
【参考方案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
【讨论】:
以上是关于socket io 发出失败的回调的主要内容,如果未能解决你的问题,请参考以下文章
socket.io 在 x 秒/第一次尝试获取响应失败后停止重新发出事件