私は小さなSocket.IOサーバーを作成しました。これは正常に動作し、接続でき、メッセージを送受信できるので、すべて正常に動作しています。コードの関連部分だけがここに表示されます。
var RedisStore = require('socket.io/lib/stores/redis');
const pub = redis.createClient('127.0.0.1', 6379);
const sub = redis.createClient('127.0.0.1', 6379);
const store = redis.createClient('127.0.0.1', 6379);
io.configure(function() {
io.set('store', new RedisStore({
redisPub : pub,
redisSub : sub,
redisClient : store
}));
});
io.sockets.on('connection', function(socket) {
socket.on('message', function(msg) {
pub.publish("lobby", msg);
});
/*
* Subscribe to the lobby and receive messages.
*/
var sub = redis.createClient('127.0.0.1', 6379);
sub.subscribe("lobby");
sub.on('message', function(channel, msg) {
socket.send(msg);
});
});
ここでは、特定のクライアントが別の部屋にサブスクライブされている問題に関心があります。そのため、各ソケット接続内でsub Redis変数も使用しています。各クライアントは別の部屋にサブスクライブでき、メッセージを受信できるためです。そこから。上記のコードが問題ないかどうかは完全にはわかりません。Socket.IO接続内でサブRedis接続を定義する以外に何かする必要がある場合はお知らせください。これは、それぞれに新しいRedis接続が生成されることも意味します。購読している部屋からメッセージを提供するために接続しているクライアント?これはかなりのオーバーヘッドだと思いますが、とにかく解決したいと思いますか?
ありがとうございました