我正在尝试在使用socket.io进行实时通信的多进程(集群)nodejs应用程序上保留在线用户的计数器。
问题是我无法使用推荐的方法:
var onlineCount = Object.keys(io.manager.connected).length;
因为我正在使用群集功能,因此不会在工作线实例之间共享。我尝试过使用以下方法,但计数器仍然不对:
io.sockets.on('connection', function(socket) {
redis.incr('connected').then(function(cnt) {
io.broadcast('count', cnt);
});
socket.on('disconnect', function() {
redis.decr('connected').then(function(cnt) {
io.broadcast('count', cnt);
});
});
});
是否有任何建议的方法,因为我用Google搜索并发现没什么用处。
谢谢!