Отправка сообщения в уникальный сокет - PullRequest
9 голосов
/ 31 октября 2011

Я использую node.js и socket.io для создания приложения чата.Как отправить сообщение в другой сокет, я знаю идентификатор сокета или только имя пользователя.Нет комнат, клиенты общаются один на один.

Ответы [ 2 ]

26 голосов
/ 31 октября 2011

С Socket.IO вы не ограничены только использованием объекта сокета в обратном вызове функции соединения. Вы можете создать объект, который хранит объект сокета для определенного имени пользователя, и искать сокет, чтобы отправить сообщение, когда клиент отправляет сообщение. Вам нужно будет передавать намеченную цель с каждым сообщением.

Пример:

var sockets = {};

...

io.on('connection', function(socket){
    socket.on('set nickname', function (name) {
        sockets[name] = socket;
    });
    socket.on('send message', function (message, to) {
        sockets[to].emit(message);
    });
});

См. Больше примеров на странице примеров сайта Socket.IO .

0 голосов
/ 24 декабря 2013

Вы можете проверить свойство username всех сокетов следующим образом:

socket.on('send message', function(message,to){

    io.sockets.clients().forEach(function (socket) {

        if (socket.username==to){socket.emit(message);} 

    });

 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...