2012-10-23 102 views
16

我使用node.jssocket.io來創建實時Web應用程序。我將讓用戶完全控制套接字連接,如手動斷開連接和(重新)連接。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(),沒有新的連接開始。

+1

什麼意思是「沒有新的連接開始」?這不會自動重新連接,或者當用戶選擇socket_connect()時,新連接不起作用。 – Martin

+0

自動重新連接工作正常,那不是問題。看到我的答案...問題解決了。 – acc

回答

15

它現在,隨着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

16

如果您使用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(); 
} 

的reconnecting_attempt,重新連接,在插座上重新連接和連接事件都應該事後發出。

+2

惱人的是,socket.disconnect()在1.x中仍然可用,而socket.reconnect()不是。因此kmftzg的版本可能是最好的 –

16

您可以通過以下客戶端配置重新連接。

// for socket.io version 1.0 
io.connect(SERVER_IP,{'forceNew':true }); 
相關問題