問題タブ [socket.io-redis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - remoteDisconnect socket.io と redis
NodeJsでRedis アダプターを使用して socket.ioを実装しようとしています。
ほとんどの場合は機能しますが、ソケットを切断/接続しようとするとエラーが発生することがあるので、正しく実装していないと思います。
誰かが と の違いを説明してくれません
socket.disconnect();
かio.of('/').adapter.remoteDisconnect();
io を次のように初期化すると:
socket.disconnect();
それでは、redisIO の使用に注意する必要はありませんか? 使用している場合remoteDisconnect
でもキャプチャできますか、それとも呼び出すsocket.on('disconnect', fn)
必要がありますか?remoteDisconnect
socket.on('disconnect', fn)
クライアントが切断された場合はどうなりますか? どうすればそれを socket.io クラスターに伝播できますか?
実用的な例をいただければ幸いです:)
ありがとう!
node.js - socket.io-redis モジュールがサーバー間で機能しない
皆さん、 socket.io-redis のドキュメントに従って socket.io-redis モジュールを実装しようとしています。あるクライアントから同じサーバー上の別のクライアントにメッセージをブロードキャストする場合、問題なく動作します。しかし、ポート 80 とポート 81 で 1 つずつ、2 つの同一のサーバーを実行し、クライアント A (ポート 80 に接続) とクライアント B (ポート 81 に接続) の間でメッセージをブロードキャストしようとすると、メッセージが通過しません。これは私のコードです:
ソケット接続が初期化されると、クライアントのユーザー ID がキーと値のペアとして redis のそれぞれの socket.id に設定され、次を使用して取得されます。
redis-cli モニターは、メッセージが実際に発行されていることを示しています。両方の websocket サーバーが同じ redis サーバーに接続されている場合、websocket メッセージは異なるアドレスを持つサーバー間で受け渡されるはずであると理解しています。
ただし、異なるポートで 2 つの同一のサーバーを使用している場合、クライアント A はクライアント B からメッセージを受信しません。クライアント A は、クライアント B と同じポートでサーバーに接続されている場合にのみ、メッセージを受信できます。
誰かがそれを助けることができれば大歓迎です.socket.io-redisアダプタモジュールを完全に間違って使用していることはわかっています.