使用http-kit和Clojure处理“房间”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用http-kit和Clojure处理“房间”相关的知识,希望对你有一定的参考价值。

我有一个很好的小型WebSocket应用程序使用http-kit服务器,我对自己感觉很好。现在我想在我的应用程序中添加不同的“房间”(其列表应该是动态的),但我很难找到任何文档或示例项目。我并不害怕自己的解决方案,但依靠别人的经验很好。有谁知道类似实现的任何例子?

我可以想到两种方法:

1)我可以将“房间”与频道一起保持在状态,然后只需将send!保持到与该房间相关的频道。似乎是最简单的方法,但每次我播放消息时,我都会过滤每个连接的频道。

2)我可以在每次打开新房间时构建一个新的套接字端点,并将新URL发送回前端(或者如果房间已经打开则发送现有URL),这将丢弃旧套接字并打开新网址的新内容。构建新端点的一些开销,但我可以直接向订阅它的每个频道广播。

还有其他想法或意见吗?我仍然是使用WebSockets和Clojure进行编程的新手,所以我觉得可能有更好的方法。

答案

你的两个解决方案都完全没问题,但是通过在状态中维护一个aditional地图可以略微提高#1

  • 从陈 - >房间的地图
  • 另一张地图从房间 - >矢量的chans。

以上是关于使用http-kit和Clojure处理“房间”的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 http-kit 和 core.async 制作一个完全非阻塞的后端应用程序吗?

java.jdbc clojure 执行!插入数量

Clojure绘制UML

如何做批处理 jdbc/insert!和 jdbc/更新!在 Clojure 中使用 postgresql?

Clojure 中的惯用错误处理

Java 和 Clojure 与 Leiningen