2

私はこれに触発されました: http://socket.io/docs/using-multiple-nodes/#passing-events-between-nodes、そして今、2 つの socket.io インスタンスを redis adpter を介して同期したいと考えています。

これは私のコードです:

//FIRST SERVER (server1.js)


var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));

var test = 0;

io.on('connection', function (socket) {
    test+=1;
    console.log("connection. test = " + test);
});

//SECOND SERVER (server2.js)


var io = require('socket.io')(4000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));

var test = 0;

io.on('connection', function (socket) {
    test+=1;
    console.log("connection. test = " + test);
});

server1.js (ポート 3000) に接続すると、「connection. test = 1'、それは良いですが、2 番目のサーバーのコンソールはまだクリーンです。2 番目のサーバー (ポート 4000) に同じことをさせたい (print 'connection = 1')。

私が間違っていることは何ですか?アダプターの使用方法の例を示してもらえますか?

ありがとう

4

1 に答える 1

5

にのみ接続する場合、トリガーされるserver1:3000方法はありません。結局のところ、そのサーバーに接続していません。io.on('connection', ...)server2:4000

各クライアントは、サーバーの 1 つだけに接続します。Redis アダプターを使用していない場合、異なるサーバーに接続されたクライアントは通信できません。Redis アダプターを使用すると、サーバーは互いのクライアントを認識し、すべてのサーバーの接続されたすべてのクライアントにメッセージをブロードキャストできます。

于 2014-10-27T04:36:21.340 に答える