我有一个websocket服务器:
var io = require('socket.io').listen(serverPort, {'store' : RedisStore, log: false});
io.enable('browser client minification');
io.enable('browser client etag');
io.enable('browser client gzip');
io.set('log level', 3); // 0 - error, 1 - warn, 2 - info, 3 - debug
io.set('transports', ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']);
io.sockets.on('connection', function (socketServer) {
// application goes here
});
我有客户:
socketClient = io.connect('http://' + host + ':' + port, {'sync disconnect on unload': true});
一切正常。我可以听取双方的消息。
socketServer.emit(listener, params); or socketClient.emit(listener, params);
但有一种我无法理解的行为。从服务器向客户端发出一些消息并重新启动服务器后,即CTRL + C和节点upServer.js,所有发出的消息都会再次发出。
示例:
socketServer.emit(listener1, params); // client fire listener1
socketServer.emit(listener2, params); // client fire listener2
socketServer.emit(listener3, params); // client fire listener3
CTRL + C. node upServer.js
客户端触发listener1,listener2和listener3
有人知道发生了什么事?