2016-03-25 2 views
0

Im работает над простым сеансовым приложением, совместно используемым кодом сеанса в URL-адресе. Я решил создать и назначить более короткий пользовательский уникальный идентификатор для каждого клиента, который подключается к сокету, а клиент, создающий сеанс, вызывает создание сокета socket.io с его идентификатором.Есть ли альтернативный способ отправки личного сообщения с Socket.io (1.0+)?

Я до сих пор не понял, что частный механизм обмена сообщениями в socket.io полагался на каждого клиента, назначенного комнате, названной их идентификатором. Это означает, что из-за того, что моя комната для сеанса названа в честь идентификатора сокета создателя, использование .to() не сообщит об этом клиенте, а скорее всем клиентам, которые теперь назначены этой комнате.

Я мог бы исправить это способами, которые потребуют некоторой перепроектировки, но сначала я хотел спросить, есть ли альтернативный способ отправки сообщения конкретному клиенту через его/ее идентификатор.

ответ

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); 
}); 
Смежные вопросы