Я намагаюся налаштувати систему з sails.js для того, щоб сервер передав повідомлення до набору клієнтів.
- Клієнт групи A надсилає на сервер запит AJAX.
- Сервер обробляє запит і надсилає повідомлення через сокет всім клієнтам групи B.
- Клієнти групи 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!