为什么我的socket.io在服务器重启时获得连接?

时间:2014-04-29 19:11:47

标签: node.js socket.io

在我的节点server.js文件中,我设置了socket.io:

var io = require('socket.io').listen(socketPort);
io.sockets.on('connection', function (socket) {
   console.log(socket.id);
});

因此,当客户端连接时,这可以正常工作,但是当我重新启动节点服务器时,它会再次调用此函数,并且所有客户端都已连接。即,某些东西缓存客户端。但我不希望它这样做。我希望从新鲜的服务器启动服务器。并且每个客户端连接只调用一次此事件(当客户端启动浏览器或刷新浏览器时)。

或者至少,我想要一个标志,知道这是我重新启动服务器后发生的连接。有什么建议吗?

当我的服务器重新启动时,可能有一种方法可以清除套接字?

我看到了这个帖子:socket.io creates one more connection after reconnecting 但我不知道" iosocket.once(' connect',function(){})"因为我使用的是io.sockets

1 个答案:

答案 0 :(得分:3)

您的客户正在尝试自动重新连接。

在您的客户端上执行此操作,他们不会自动尝试重新连接:

var socket = io.connect('http://server.com', {
  reconnect:false
});

您可以在此处查看更多客户选项:https://github.com/socketio/socket.io-client/blob/master/docs/API.md#new-managerurl-options