私はlocalyメッセージを送信し、ブロードキャストする方法を知っていますsocket.broadcast.emit()
- すべての接続されたクライアントは同じメッセージを受信します。socket.ioでクライアントにメッセージを送信する方法
ここで私は特定のクライアントにプライベートメッセージを送信する方法を知りたいと思います.2人(クライアントからクライアントへのストリーム)間のプライベートチャット用に1つのソケットを意味します。ありがとう。
私はlocalyメッセージを送信し、ブロードキャストする方法を知っていますsocket.broadcast.emit()
- すべての接続されたクライアントは同じメッセージを受信します。socket.ioでクライアントにメッセージを送信する方法
ここで私は特定のクライアントにプライベートメッセージを送信する方法を知りたいと思います.2人(クライアントからクライアントへのストリーム)間のプライベートチャット用に1つのソケットを意味します。ありがとう。
サーバ側:
var usersConnectedTo = {};
io.on('connection', function(socket){
socket.on('set_socketid', function(user){
usersConnectedTo[user] = socket.id; // if usersConnectedTo[user] is undefined
});
socket.on('private_message', function(private_msg){
var id = usersConnectedTo[private_message.user];
io.to(id).emit('private_message', private_message.msg);
});
});
クライアント側:
io.emit('user', user1+user2); // user should be such that when A connects to B for
// first time or B connects to B for first time, it should always return same user.
io.emit('private_message', {
user: user1+user2,
msg: 'private_msg'
});
usersConnectedTo変数店舗ごとのプライベートチャットsocketid。
(A、B)と(A、C)間のチャットのために異なるsocket.idを保存するために、socket.idはABとACとして保存されます。
userとprivate_messageは同期して送信する必要があります。
SURE:単純に、
これは、何が必要です:
io.to(socket.id).emit("event", data);
ユーザーがサーバーに参加したときに、ソケットの詳細はID.This含めて生成されるIDは、実際に送信することができますされ特定の人々へのメッセージ。
まず我々は
var people={};
people[name] = socket.id;
、アレイ内のすべてのsocket.idsを格納する必要があり、ここでの名前は、レシーバ名です。例:私たちがメッセージを送信しているときは常に
people["trojan"]=2387423cjhgfwerwer23;
そうで、今、私たちはレシーバ名とそのsocket.idを取得することができます:私たちはrecievername.Youを知っている必要があり、このため
をするレシーバの名前を放出する必要がありますサーバ。
最終的なものは次のとおりです。これはあなたのためにうまく機能
socket.on('chat message', function(data){
io.to(people[data.reciever]).emit('chat message', data.msg);
});
希望!!グッドラック
。