Javascript 如何取消、超时或清除Socket.IO中排队的消息

Javascript 如何取消、超时或清除Socket.IO中排队的消息,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在使用Socket.IO中的回调来知道操作何时完成。例如: $loading.show(); socket.emit('delete', {id:123}, function(error){ $loading.hide(); if(error) alert(error); }); 据我所知,如果套接字断开连接,那么消息将排队,直到套接字连接。然后它被发送。但这可能是几分钟甚至几小时,对吗 如果消息等待了20秒,有没有办法清除排队的消息、设置超时或以其他方

我正在使用Socket.IO中的回调来知道操作何时完成。例如:

$loading.show();

socket.emit('delete', {id:123}, function(error){
    $loading.hide();

    if(error)
        alert(error);
});
据我所知,如果套接字断开连接,那么消息将排队,直到套接字连接。然后它被发送。但这可能是几分钟甚至几小时,对吗


如果消息等待了20秒,有没有办法清除排队的消息、设置超时或以其他方式阻止消息发送?

有非常简单的解决方案:

socket.on('connect', function() {
    socket.sendBuffer = [];
    // do stuff
});

问题是,当套接字失去连接时,套接字缓冲区中可能会留下一些数据。所以,请澄清一下。

有非常简单的解决方案:

socket.on('connect', function() {
    socket.sendBuffer = [];
    // do stuff
});

问题是,当套接字失去连接时,套接字缓冲区中可能会留下一些数据。所以,把它清理干净。

你确定要排队吗?我并没有真正使用Socket.io,但就我所理解的概念而言,每个连接都会创建一个新的套接字对象,这与以前连接的套接字无关。并且消息属于套接字,所以在重新连接后不应该有任何旧消息。我不确定&找不到任何文档。至少,我知道事件是在连接发生之前排队的,因为您可以在连接之前发出。您确定该队列吗?我并没有真正使用Socket.io,但就我所理解的概念而言,每个连接都会创建一个新的套接字对象,这与以前连接的套接字无关。并且消息属于套接字,所以在重新连接后不应该有任何旧消息。我不确定&找不到任何文档。至少,我知道事件是在连接发生之前排队的,因为您可以在连接之前发出。