我是 socket.io 和 ioredis 的新手。这段代码运行良好。但是我仍然想不出一种方法来检测断开连接的用户(当用户关闭选项卡时)并向所有客户端显示在线用户。
redis.subscribe("users");
redis.on("message",function(channel,message){
console.log('Receive message %s from channel %s', message, channel);
io.emit(channel,message);
io.on("disconnect",function(socket){
console.log("a user disconnected");
});
});
任何帮助将不胜感激。
为 socket.io-redis 更新
var io = require('socket.io')(server);
var redis = require('socket.io-redis');
io.adapter(redis({ host: '127.0.0.1', port: 6379 }));
io.sockets.on('connection', function(socket) {
var current_user = {};
socket.on('message', function(data) {
current_user = json.Parse(data);
socket.broadcast.emit('message', data);
});
socket.on('disconnect', function () {
console.log(current_user); // Now I know which user is disconnected ?
io.emit("dc_user",current_user);
});
});
这是通知其他客户端哪个用户已断开连接的好方法吗?