Ответы пользователя по тегу Node.js
  • Как передать данные при коннекте Socket IO?

    Aliansys
    @Aliansys
    Я бы предложил Вам попробовать вынести всю работу с сокетами в одно место, то есть либо все за пределами document.ready, либо все внутри. А то у вас событие onConnect навешивается в doument.ready, а коннект к серверу происходит до этого момента. Возможно listener просто еще не навешан, когда вы соединяетесь с сервером.
    Ну и побольше консоль логов написать, чтобы понять в каком месте что не отрабатывает. С виду все написано верно, что касается самих пересылок сообщений.
    Ну и да, на сервере socket.emit отправит сообщение самому себе. Но второе (socket.broadcast.emit) должно сделать то что вы хотите (отправит всем, кроме себя).
    Ответ написан
    Комментировать
  • Возможно ли, используя Mocha, тестировать Node.js + Socket.io сервер?

    Aliansys
    @Aliansys Автор вопроса
    Ответ найден. Версии библиотек socket.io и socket.io-client должны быть одинаковыми (ну или в новой версии socket.io-client что-то не так).
    Сейчас у меня стоит socket.io v0.9.16 и socket.io-client этой же версии и все отлично работает.
    Ответ написан
    Комментировать
  • Как отправить сообщение к конкретным пользователям?

    Aliansys
    @Aliansys
    Из документации socket.io (отправка сообщений)
    // отправить текущему сокету сформировавшему запрос (туда откуда пришла)
    socket.emit('message', "this is a test");
    
    // отправить всем пользователям, включая отправителя
    io.sockets.emit('message', "this is a test");
    
    // отправить всем, кроме отправителя
    socket.broadcast.emit('message', "this is a test");
    
    // отправить всем клиентам в комнате (канале) 'game', кроме отправителя
    socket.broadcast.to('game').emit('message', 'nice game');
    
    // отправить всем клиентам в комнате (канале) 'game', включая отправителя
    io.sockets.in('game').emit('message', 'cool game');
    
    // отправить конкретному сокету, по socketid
    io.sockets.socket(socketid).emit('message', 'for your eyes only');
    Ответ написан
    19 комментариев