私は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);
});
});
これは、どのユーザーが切断されているかを他のクライアントに通知するための良いアプローチですか?