使用 http-kit 和 Clojure 处理“房间”
Posted
技术标签:
【中文标题】使用 http-kit 和 Clojure 处理“房间”【英文标题】:Handling "rooms" with http-kit and Clojure 【发布时间】:2018-04-27 20:46:09 【问题描述】:我有一个使用http-kit
服务器的漂亮的小型 WebSocket 应用程序,我对自己感觉很好。现在我想向我的应用程序添加不同的“房间”(其列表应该是动态的),但我很难找到任何文档或示例项目。我不害怕提出自己的解决方案,但是依靠他人的经验是很好的。有谁知道类似实现的任何示例?
我可以想到两种方法:
1)我可以将“房间”与频道一起保持在状态,然后将send!
与与该房间关联的频道保持一致。似乎是最简单的方法,但我每次广播消息时都会过滤每个附加的频道。
2) 每次打开新房间时,我都可以构建一个新的套接字端点,并将新的 URL 发送回前端(如果房间已经打开,则发送现有的 URL),然后丢弃旧的socket 并为新的 url 打开一个新的。构建新端点的一些开销,但我可以广播到每个订阅它的频道。
还有其他想法或意见吗?我对使用 WebSockets 和 Clojure 编程还是很陌生,所以我觉得可能有更好的方法。
【问题讨论】:
【参考方案1】:您的两个解决方案都很好,尽管通过在该州维护一个额外的地图会稍微改进 #1,这样您就可以拥有
一张来自chan -->房间的地图 房间的另一张地图 --> chans 的矢量。【讨论】:
以上是关于使用 http-kit 和 Clojure 处理“房间”的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 http-kit 和 core.async 制作一个完全非阻塞的后端应用程序吗?
如何做批处理 jdbc/insert!和 jdbc/更新!在 Clojure 中使用 postgresql?