停止服务器后,增加连接socket.io

时间:2019-12-27 20:53:47

标签: node.js sockets socket.io

我对nodeJs的socket.io有问题。

我正在尝试创建从客户端到服务器的连接。客户端连接后,服务器会向客户端发送一条消息(ack)。
在此之前,一切正常,但是当我断开服务器并重新启动时,它将两次向客户端发送消息。
如果我第三次重复该操作,则会出现三则消息。

我已经抓住了问题:

Connection socket.io incremented after stopping the server

client.js

var socket = require('socket.io-client')('http://localhost:8050', {
'forceNew':true
}); 

socket.on('connect', onConnect);
function onConnect(){
        console.log('connect ' + socket.id);

        socket.emit('sendConnect','First connect'); 
        socket.on("ack", function(data) {
            console.log("ack reçu");
        });  

        socket.on('disconnect', function(reason) { 
          console.log(reason); 
        });
}

server.js

var io = require("socket.io");
var sockets = io.listen(8050);

sockets.on('connection', function (socket) {
       socket.on('sendConnect', function (data) {
           console.log("message :" + data);
           socket.emit('ack');
           socket.on('disconnect', function() {
               console.log('Got disconnect!');
           });
       });
});

我查看了此错误是否已经到来而没有找到答案。
我一定做错了!

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的onConnect函数每次套接字连接时都会添加新的事件侦听器。像这样将事件订阅移出onConnect

var socket = require('socket.io-client')('http://localhost:8050', {
  forceNew: true
});

socket.on('connect', onConnect);

socket.on('ack', function(data) {
  console.log('ack reçu');
});

socket.on('disconnect', function(reason) {
  console.log(reason);
});

function onConnect() {
  console.log('connect ' + socket.id);

  socket.emit('sendConnect', 'First connect');
}