socket.io在重新连接后再创建一个连接

boh*_*boh 8 node.js socket.io

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

use*_*109 15

默认情况下断开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
Run Code Online (Sandbox Code Playgroud)

您应该使用once而不是第一次使用oneventhandler 来监听第一次连接.尝试

iosocket.once('connect', function () {
Run Code Online (Sandbox Code Playgroud)

代替

iosocket.on('connect', function () {
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试以这种方式编写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>');
 });
Run Code Online (Sandbox Code Playgroud)

它可能是由其他2个eventlisteners注册到connect事件引起的.当客户端断开连接时,其他2个侦听器仍将在此处,并且不会被取消注册.