38

かなり単純な質問です。バックエンドとして nodejs を使用してリアルタイム ゲームを構築していますが、どちらがより信頼性が高く、どちらがより効率的であるかについての情報があるかどうか疑問に思っています。コード全体で Redis と Socket.io の両方を多用しています。Socket.io のRoomsを使用する必要があるのか​​、それとも redis のpub-subを使用した方がよいのかを知りたいですか?

更新: socket.io ルームで redis pub/sub を使用したいという非常に重要な理由があることに気付きました。Socket.io ルームでは、リスナーに公開すると、(ブラウザ) クライアントがメッセージを受信します。redis では、実際には (redis~on サーバーの) クライアントがメッセージを受信します。このため、各クライアントに固有の情報をすべての (サーバー) クライアントに通知し、ブラウザ クライアントに渡す前に何らかの処理を行う場合は、redis を使用することをお勧めします。redis を使用すると、イベントを起動して各ユーザーの個別のデータを生成できます。socket.io の場合と同様に、実際にすべてのユーザー固有のデータを一度に生成し、それらをループして個別のデータを送信する必要があります。少なくとも私にとっては、部屋の目的。

残念ながら、私の目的のために、今のところredisにこだわっています。

更新 2: 2 つの redis 接続のみを使用するプラグインを開発することになりましたが、それでも個々のクライアント処理を許可します。以下の回答を参照してください....

4

2 に答える 2

43

Redis pub/sub は、すべてのクライアントが redis に直接アクセスできる場合に最適です。複数のノード サーバーがある場合は、メッセージを他のサーバーにプッシュできます。

しかし、ブラウザーにクライアントもある場合は、サーバーからクライアントにデータをプッシュするために別のものが必要です。この場合、socket.io は優れています。

ここで、Redis ストアで socket.io を使用すると、socket.io は内部で Redis pub/sub を使用してサーバー間でメッセージを伝達し、サーバーはメッセージをクライアントに伝達します。

そのため、Redis ストアで設定された socket.io で socket.io ルームを使用するのがおそらく最も簡単です。

于 2013-02-19T22:43:38.380 に答える