Да, для простой системы чата, вам просто нужно добавить имя канала пользователя в группы, на которые он подписан.
Однако вам определенно потребуется смоделировать систему чата в базе данных для более сложной работы.система.Допустим, у вас есть модель Chat, ChatMember и Message.Когда пользователь подключается к веб-сокету, ему не нужно указывать какой-либо чат, потому что это обычное соединение.Любое сообщение, отправленное клиентом, должно указывать в чате, чтобы вы могли просмотреть участников чата и переслать сообщение всем, кто в данный момент подключен.
Как узнать, кто в данный момент подключен?это сложная часть.В моей архитектуре у меня есть группа для каждого пользователя, что-то вроде почтового ящика.Имя группы генерируется из идентификатора пользователя.Каждый пользователь может иметь несколько подключений, например, мобильные, веб и т. Д. Все соединения, поступающие от пользователя, добавляются в группу пользователей, а номер активного подключения пользователя сохраняется в модели входящих сообщений.При новых подключениях он увеличивается и уменьшается во время отключений.
Чтобы узнать, какие участники чата в данный момент находятся в сети, я могу просто проверить, что в почтовом ящике пользователя есть хотя бы одно подключение.Если он в сети, я пересылаю сообщение в его группу ibox, иначе я сохраняю сообщение в его почтовом ящике.Каждый раз, когда пользователь подключается, ему отправляются все сообщения в его почтовом ящике, и почтовый ящик очищается.
Это всего лишь пример способа его реализации, но вы также можете придумать собственную архитектуру или улучшить ее..