2016-03-25 12 views
0

URLのセッションコードで共有されるシンプルなセッションベースのアプリケーションに取り組んでいます。私は、ソケットに接続するクライアントごとにユーザーフレンドリな一意のIDを生成して割り当てることにしました。セッションを作成したクライアントは、自分のIDでsocket.ioのルームを作成します。Socket.io(1.0+)でプライベートメッセージを送信する別の方法はありますか?

socket.ioのプライベートメッセージングメカニズムは、IDで指定された部屋に割り当てられている各クライアントに依存していました。これは、セッション用の部屋の名前が作成者のソケットIDの名前に変更されているため、.to()を使用してもそのクライアントにはメッセージが送信されず、その部屋に現在割り当てられているすべてのクライアントになります。

私はいくつかの再設計を必要とする方法でこれを修正することができましたが、最初に自分のIDで特定のクライアントにメッセージを送信する別の方法があるかどうか尋ねました。

答えて

0
/*create an array of clients, where key is the name of user and value is its unique socket id(generated by socket only, you do not have to generate it) during connection.*/ 
var clients = {}; 
clients[data.username] = { 
"socket": socket.id 
}; 
//on server side 
socket.on('private-message', function(data){ 
    io.sockets.connected[clients[data.username].socket].emit("add-  message", data); 
}); 
//on client side 
socket.emit("private-message", { 
"username": userName, 
"content": $(this).find("textarea").val() 
}); 
socket.on("add-message", function(data){ 
notifyMe(data.content,data.username); 
}); 
関連する問題