2015-04-27 99 views
2

我正在开发一个使用socket.io的node.js应用程序来在服务器和客户端之间进行通信。如果服务器面临任何错误,我会向客户端发送错误消息,并关闭服务器和客户端的连接。但是,当客户端尝试重新连接时,它不再能够连接到服务器。我的代码socket.io在断开连接后不重新连接

server.js

io.sockets.on('connection', function(socket) { 

    /*Some code*/ 
    stream.on('error',function(errormsg){ 
     socket.emit('error',{txt: "Error!"}); 
     socket.disconnect(); 
    }); 
}); 

client.js

var server_name = "http://127.0.0.1:5000/"; 
var socket = io.connect(server_name); 

socket.on('error',function(data){ 
    console.log(data.txt); 
    socket.disconnect(); 
}); 

function submitclick() 
{ 
    var text="hello"; 
    if(socket.connected ==false) 
    socket= io.connect({'forceNew': true}); 
    console.log(socket.connected); 
} 

的socket.connected状态是假的。我也没有在服务器端收到它。

回答

2

我不认为你的电话io.conncet是同步的,你太早检查socket.connected。如果你想验证你的重新连接成功,尝试这样的:

function submitclick() 
{ 
    var text="hello"; 
    if(socket.connected ==false) { 
    socket= io.connect({'forceNew': true}); 
    socket.on('connect', function() { 
     console.log('Connected!'); 
    }); 
    } 
} 

编辑: 作为@ jfriend00指出,可能没有必要为你做的socket.disconnect()在首位的socket.io应该自动处理重新连接。

+1

它现在可以运行:) – user1692342

+1

socket.io的一个主要特性是它可以为你自动重新连接。如果配置正确,我不明白为什么需要手动重新连接它。换言之,正确配置的socket.io代码不应该包含代码在你的答案中。建立连接一次,让socket.io为您处理重新连接。 – jfriend00

+0

@ jfriend00好的建议 –

相关问题