websocket - 使用 http-kit 和 Clojure 处理“房间”
问题描述
我有一个不错的使用http-kit
服务器的 WebSocket 小应用程序,我对自己感觉很好。现在我想向我的应用程序添加不同的“房间”(其列表应该是动态的),但我很难找到任何文档或示例项目。我不害怕提出自己的解决方案,但是依靠别人的经验是件好事。有谁知道类似实现的任何示例?
我可以想到两种方法:
1)我可以将“房间”与频道一起保持在状态,然后只保留与该send!
房间关联的频道。似乎是最简单的方法,但是每次广播消息时我都会过滤每个附加的频道。
2)我可以在每次打开新房间时构建一个新的套接字端点,并将新的 URL 发送回前端(如果房间已经打开,则发送现有的 URL),然后丢弃旧的套接字并打开新网址的新网址。构建新端点的一些开销,但是我可以广播到每个订阅它的频道。
还有其他想法或意见吗?我对使用 WebSockets 和 Clojure 编程还是很陌生,所以我觉得可能有更好的方法。
解决方案
您的两个解决方案都很好,尽管通过在该州维护一个附加地图会稍微改进#1,这样您就可以
- 来自 chan --> room 的地图
- 房间的另一张地图-> chans 的向量。
推荐阅读
- command-line-arguments - 如何将命令行上的单个斜杠转义到 Git bash?
- reactjs - 在 react-native 中检测媒体按钮按下
- apache-zeppelin - 齐柏林飞艇z。功能文档
- asp.net - 调用银行api时:远程服务器返回错误:(401)未授权
- ios - 如何在不跳过第一个零的情况下将字符串转换为int?
- angular - 使用 RxJS 的 Angular 数据服务
- java - 获取类实例并覆盖方法
- arrays - 将字符串数组传递给存储过程
- reactjs - React - 使用多个表单值更新状态
- ios-simulator - 无法使用 iOS 模拟器录制 1080p 视频