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事件引起的。 当客户端断开连接时,另外两个监听器仍然在这里,并且不会被取消注册。