【发布时间】:2014-10-11 19:46:18
【问题描述】:
我想实现一个可扩展的聊天应用程序。 因此,我想使用 pub/sub 技术(当有人发送消息时,它被发送到整个房间)。因为简单,我选择了Redis缓存服务器。
另外,我想使用长轮询将新消息从服务器传输到客户端。我不使用网络套接字的原因是因为我在组织的代理中可能会遇到一些麻烦。
据我在网上阅读,这听起来像是问题的标准解决方案。
您能否建议处理长轮询请求之间发送的消息的最佳解决方案是什么?用户如何不会错过消息?
听起来我需要为每个客户端保存一个缓存,其中包含他自己的消息。但是这样 - 我没有利用 pub/sub 技术。我可以向房间中的每个用户发送消息,而不是发布/订阅。
【问题讨论】:
-
如果这仍然感兴趣,下面的 Go 库正好处理这种情况,从实际的 Web 服务器中抽象出 pubsub+longpoll,因此你包装它的协议无关紧要,http、ws、 amqp 或其他任何东西:github.com/ventu-io/go-longpoll
标签: architecture chat scalability