Допустим, у вас есть сайт, на котором пользователи могут открывать чаты. Когда комната открывается, пользователи могут приглашать других и общаться в чате.Какова наилучшая практика для серверов (ов) WebSocket?
Позволяет также притворяться, что вы хотите использовать WebSockets для связи с клиентами. В большинстве серверных реализаций WebSocket существует простая функция, такая как connection.broadcast(message)
, которая отправляет сообщения всем подключенным хостам, но не тем, кто инициировал трансляцию. Это отличная функция, потому что вам не нужно сохранять список всех клиентов для себя, чтобы они обновлялись. Проблема с примером в чате заключается в том, что в этом случае вы не хотите передавать каждое сообщение всем, но только другим клиентам, находящимся в одной комнате.
Это оставляет меня с двумя вариантами:
- Ролл своей собственной
broadcastToRoom(room_id)
функции, которая, в свою очередь, означает, что для отслеживания всех клиентов и номера. - Создавать новый экземпляр сервера (на новом порту) каждый раз, когда создается новая комната.
Что вы хотите сделать?
я немедленно уклоняюсь от порождения нового сервера для каждой комнаты - не то, что полный сервер HTTP был разработан для, растраты ресурсов, ваши порты будут быстро заполнять и (менее важно) затрудняет передачу данных между комнатами, если вы решите продлить что-то в этом направлении позже –