2

私は2台のマシンで次のコードを持っています

 var server       = require('http').createServer(app);
    io               = require('socket.io')(server);
    var redisAdapter = require('socket.io-redis');
    io.adapter(redisAdaptebr({host: config.redis.host, port: config.redis.port}));
    server.listen(config.port, function () {

そして、これら2台のマシンに接続されているすべてのクライアントのsocket.idを中央データベースに保存します。ソケットのIDが保存され、同じサーバーでのイベント送信は問題なく機能しますが、他のサーバーのソケットにメッセージを送信しようとすると、送信されません仕事..

subSocket = io.sockets.connected[userSocketID];
   subSocket.emit('hello',{a:'b'})
  1. redisがうまく機能していることをどうやって知ることができますか?
  2. 別のサーバーに接続されたソケットにメッセージを送信する方法。
4

2 に答える 2

1

できません。Socket.IO にはスティッキー セッションが必要です。ソケットは、元のプロセスとのみ通信する必要があります。

ドキュメント

socket.io サーバーを相互に通信させてイベントを渡すことができますが、クライアントはそれが発生したプロセスと通信し続ける必要があります。

于 2015-12-14T18:11:38.190 に答える