/ / Sails.js + socket.io: Надсилання повідомлень від сервера до клієнтів - node.js, sockets, sails.js

Sails.js + socket.io: Відправлення повідомлень від сервера до клієнтів - node.js, sockets, sails.js

Я намагаюся налаштувати систему з sails.js для того, щоб сервер передав повідомлення до набору клієнтів.

  1. Клієнт групи A надсилає на сервер запит AJAX.
  2. Сервер обробляє запит і надсилає повідомлення через сокет всім клієнтам групи B.
  3. Клієнти групи B отримують повідомлення через сокет і показують щось.

Відповідно до розетки.Документи I, я повинен бути в змозі мати клієнтів у групі B приєднатися до "кімнати", а потім мати сервер трансляції в цій конкретній кімнаті, але на стороні клієнта, вже існуючий "сокет" не "має метод" сокет \ t .join ("room") ". Отже, я спробував надіслати унікальну подію всім клієнтам:

socket.on("connect", function(){
console.log("Client Connected");
});

socket.on("my_event", function(data){
console.log("my_event received");
});

Це працює відмінно, роблячи "sails.io.sockets.emit ("my_event", {...}) "на стороні сервера, але хіба це не відправляє подію до кожного окремого клієнта? Я можу зробити назву події унікальною, щось на зразок "my_event_000" з ідентифікатором, щоб вказати групу, але це все одно буде надсилати події кожному клієнту без необхідності.

Чи потрібно використовувати "кімнати"? А якщо так, то як?

Відповіді:

4 для відповіді № 1

Шлях Sails для цього міг би мати модель, що підтримує ваші "Групи", а в дії контролера матимуть підписку на сокет для групи з Group.subscribe(groupId, req.socket). Потім ви можете надсилати повідомлення певній групі Group.publish(groupId, data).

Ви також можете підписатися на довільне ім'я кімнати в контролері за допомогою req.listen(groupId)і транслювати в цю кімнату req.broadcast(roomName, data).

Це все в Вітрила документації для роботи з Sockets!