Socket.io - 客户端断开连接后手动重新连接
Posted
技术标签:
【中文标题】Socket.io - 客户端断开连接后手动重新连接【英文标题】:Socket.io - Manual reconnect after client-side disconnect 【发布时间】:2012-10-12 23:41:33 【问题描述】:我使用node.js
和socket.io
创建一个实时网络应用程序。我将让用户完全控制套接字连接,例如手动断开和(重新)连接。
function socket_connect()
console.log('func socket_connect');
socket = io.connect('http://url/to/the/app');
function socket_reconnect()
console.log('func socket_reconnect');
socket_connect();
function socket_disconnect ()
console.log('func socket_disconnect');
if (socket) socket.disconnect();
在客户端启动时socket_connect()
函数工作正常,但使用socket.disconnect()
后,没有新的连接开始。
【问题讨论】:
“没有新的连接开始”是什么意思?即不会自动重新连接,或者当用户选择 socket_connect() 时新连接不起作用。 自动重新连接工作正常,这不是问题。看我的回答...问题解决了。 【参考方案1】:现在可以使用 socket.socket.reconnect()
function socket_connect()
console.log('func socket_connect');
socket = io.connect('http://url/to/the/app');
function socket_reconnect()
console.log('func socket_reconnect');
socket.socket.reconnect();
function socket_disconnect ()
console.log('func socket_disconnect');
if (socket) socket.disconnect();
相关:https://github.com/LearnBoost/socket.io-client/issues/251
【讨论】:
【参考方案2】:如果您使用的是 Socket.io 1.0,请尝试使用套接字上的io
管理器来处理手动断开和重新连接。
// Connect to socket.io
var socket = io.connect('url');
function manual_disconnect()
socket.io.disconnect();
function manual_reconnect()
socket.io.reconnect();
socket上的reconnecting_attempt、reconnecting、reconnected和connected事件都应该在之后触发。
【讨论】:
令人恼火的是,socket.disconnect() 在 1.x 中仍然可用,而 socket.reconnect() 不可用。因此,kmftzg 的版本可能是最好的【参考方案3】:您可以按照客户端配置重新连接。
// for socket.io version 1.0
io.connect(SERVER_IP,'forceNew':true );
【讨论】:
socket.io 2 怎么样?以上是关于Socket.io - 客户端断开连接后手动重新连接的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io - nodejs 服务器端。重新连接后传输关闭