socket.io在重新连接后创build一个更多的连接

我在这里尝试一个简单的聊天应用程序与socket.io和node.js。 每次我重新启动node.js服务器,socket.io自动重新连接,并以某种方式创build一个更多的连接到服务器,即客户端现在收到两次相同的聊天消息。 我该如何解决?

默认情况下,断开连接socket.io重新连接丢失的连接,重新运行connect事件。 所以每次重新连接,你都会添加一个事件监听器来接收消息。 所以你得到多个消息等于服务器重新启动/连接丢失。

 Incoming Chat: Connected dsdadsada Disconnected //recieved by 1st listener Connected //added 2nd listener adasd Disconnected //recieved by 1st listener Disconnected //recieved by 2nd listener Connected //added 3rd listener 

你应该听第一次连接使用once而不是在第一次运行事件处理程序。 尝试

 iosocket.once('connect', function () { 

代替

 iosocket.on('connect', function () { 

尝试用这种方式来编写index.html

  iosocket.on('connect', function () { $('#incomingChatMessages').append($('<li>Connected</li>')); }); iosocket.on('message', function(message) { $('#incomingChatMessages').append($('<li></li>').text(message)); }); iosocket.on('disconnect', function() { $('#incomingChatMessages').append('<li>Disconnected</li>'); }); 

这可能是由其他2个eventlisteners注册到connect事件引起的。 当客户端断开连接时,另外两个监听器仍然在这里,并且不会被取消注册。