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