2017-10-11 11 views
0

は、私は私ができるプライベートメッセージを送信するべきどのようにIOソケットとかなり混乱していますソケットioでプライベートメッセージを送信するには?

アプローチの一つ

socket.emit(`privateMessage:${req.user._id}`, 'someones Private message to User') 

とクライアントで、私は、ユーザーIDと、このメッセージを受信して​​い

アプローチ二

socket.to(socketID).emit(`privateMessage`, 'someones Private message to User') 

これを行うための標準的な方法はわかりませんし、私もredis pub subを使用しています。私はかなり混乱していますあなたはちょうどそのユーザーにメッセージを送信するには、対象ユーザのためのsocketオブジェクトを持っている場合は、標準のアーキテクチャ

答えて

2

でこれらをタイアップするwは、あなたが使用する必要があります。

socket.emit(...) 

をお持ちでない場合socket対象ユーザのためのオブジェクトが、そのユーザのsocketIDを持っている、そして、あなたが使用することができます。

io.to(socketID).emit(...) 

socketIDがsocketのIDですあなたがすでに持っているのでsocket.to(socketID)を使用する理由は本当にありませんsocketは対象ユーザーのオブジェクトなので、socket.emit()はより直接的で、おそらくやや速いです。

+0

素晴らしい!ありがとうしかし、1つの質問 '' 'socket'''オブジェクトはあなたがユーザーIDまたはユーザーに関連する何かを参照していますか? – Nane

+1

@Nane - ユーザーが接続すると、接続を表す実際のJavascriptオブジェクトであるソケットオブジェクトが取得されます。これは接続時に 'io.on( 'connection、function(socket){});であなたに提示されます。私はあなたが既にターゲットユーザのためのソケットオブジェクトを持っている(あなたがそれを保存しているか、そのソケットから他のメッセージを受け取っているか、それを持っているので)、単にsocket.emit()を使うことができます。そうでなければ、socket.ioライブラリに 'io.to(socketID).emit()'であなたのためにそれを探すように頼むことができます。 – jfriend00

関連する問題