我想在CppCMS中添加对服务器附带事件的支持。我了解在通信级别上应该做什么的技术部分:客户端发送长轮询XmlHTTPRequest,等待响应,服务器接受连接,直到服务器端事件发生并将响应发送给客户端。客户端重复此过程。
然而,对于大多数web开发人员来说,这太“低”了。有很多问题:我如何管理事件,如何管理连接等等。
我想了两种可能的模型:
- How do I manage queues and the session level, at the level of single page?
- How do I delete queues and create timeouts on them?
- What happens if more then one "window" subscribes to same queue?
所以,我想知道,服务器端推送技术背后最流行和推荐的API模型是什么?
谢谢
编辑:添加了第三个选项
发布于 2009-08-11 23:39:51
您应该签出XMPP PubSub,它在XMPP上定义了一个通用的发布/订阅协议。还有一个XMPP扩展称为BOSH (在XEP-0124中单独记录了较低级别的协议细节),它定义了一种机制,允许HTTP客户端使用长轮询(即彗星)绑定到XMPP服务器。将这两种规范结合起来,可以为使用comet的web应用程序提供一个健壮的事件订阅模型。即使您最终没有使用XMPP/BOSH,规范也包含了一些关于如何构建此类系统的宝贵见解。
如果您最终使用了XMPP和BOSH,以下是一些您可能会发现有用的工具:
诚然,这是一个非常重的解决方案,它可能不适合您的特定应用程序,但在这些标准中进行了大量的思考,因此它们可能会有所帮助。
发布于 2009-08-10 14:45:29
试试贝尤克斯,它非常像你的第一个型号。客户端订阅频道“聊天室/新消息/134”。如果有新消息,服务器将向订阅者广播。
您可以使用通配符通道名订阅多个房间“聊天室/新消息/*”(仅尾随)
发布于 2009-08-10 15:44:46
没有适用于所有应用程序的通用解决方案。如果您想了解一些通用模式,请看一下事件驱动的架构。
有一些来自我参加过一次演讲的幻灯片在线(这是一个相当高层次的主题视图)。
https://stackoverflow.com/questions/1218292
复制相似问题