2017-09-07 2 views
0

v2.0.3のノードプラットフォームでsocket.ioを使用しています。それは働いて、今では私が前のコードを変更していなくても動作しない単一receiverID.Butにメッセージを発していますsocket.broadcast.to not working

socket.broadcast.to(msg.receiverID).emit('new message', { "username": msg.username, "message": msg.message, "to": msg.to, "receiverName": msg.receiverName, "senderName": msg.senderName, "dateTime": data.created }); 

週間前に動作するコードの下

。しかし、我々は、このための解決策の一つが、下記のようなメッセージを発するようにIOオブジェクトを試してみることです発見した:

io.to(msg.to).emit('new message', { "username": msg.username, "message": msg.message, "to": msg.to, "receiverName": msg.receiverName, "senderName": msg.senderName ,"dateTime":data.created}); 

なぜこの紛争は(socket.broadcast.toある)10のよう廃止予定または未使用されます。に()。

+0

[io.sockets.emitとブロードキャストの違いは何ですか?](https://stackoverflow.com/questions/10342681/whats-the-difference-between-io-sockets-emit-and) -broadcast) –

+0

多分あなたはノードのバージョンの更新が必要で、yesの "io.to"も動作します。 https://socket.io/docs/emit-cheatsheet/# –

答えて

0

socket.broadcast.to(someRoomOrId).emit(...)は、室内のすべてのソケットに送信します。socket以外のIDと一致します。あなたが見ているのは、それがsocketに送られていないということなのであれば、これがどのように動作するのでしょうか。

あなたが一致するすべてのソケットに送信する場合は、使用してください。代わりに

io.to(someRoomOrId).emit(...) 

socket.to()バージョンは、具体的にはオブジェクトsocketを除外することを意図しています。ここでsocket.to()用ドキュメントの一部です:

(ソケット自体は除外される)イベントのみ与えられた部屋に参加しているクライアントにブロードキャストされる後発事象の放出のための修飾子を設定します。