redis在socket.io接收多次重覆信息問題
在網上看到一個範例,展示了redis 如何配合socket.io進行互動的source code :
io.on('connection', function(socket){
redis.on('message', function(channel, message){
socket.emit(channel, JSON.parse(message));
});
});
這段程式碼有一個問題,就是會因為client的數目增加而令redis接收message的handler觸發多次,因此向每一個socket.io client 傳送了多次重覆的信息。解決方法是將redis的程式碼移出io.on('connection', function(socket){ .. });
:
redis.on('message', function(channel, message){
//socket.emit改為io.sockets.emit ,信息傳送給所有人
io.sockets.emit(channel, JSON.parse(message));
});
io.on('connection', function(socket){
//當有新的connection要處理的程式碼
});