У меня есть симпатичное маленькое приложение WebSocket, использующее сервер http-kit
, и я чувствую себя довольно хорошо. Теперь я хочу добавить разные «комнаты» (список которых должен быть динамическим) в мое приложение, но у меня возникают трудности с поиском какой-либо документации или примеров проектов. Я не боюсь раскручивать свое собственное решение, но приятно опираться на чужой опыт. Кто-нибудь знает какие-либо примеры подобной реализации?
Я могу придумать два подхода:
1) Я мог бы просто сохранить "комнату" в состоянии вместе с каналом, а затем просто send!
для каналов, связанных с этой комнатой. Кажется, это самый простой подход, но затем я фильтрую каждый подключенный канал каждый раз, когда транслирую сообщение.
2) Я могу создать новую конечную точку сокета каждый раз, когда открывается новая комната, и отправлять новый URL-адрес во внешний интерфейс (или отправлять существующий URL-адрес, если комната уже открыта), который затем отбрасывает старую сокета и откройте новый для нового URL. Некоторые затраты на создание новой конечной точки, но тогда я могу просто транслировать на каждый канал, подписанный на нее.
Любые другие идеи или вклад? Я все еще довольно новичок в программировании с помощью WebSockets и с Clojure, поэтому я чувствую, что может быть лучше.