在我的节点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
答案 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