Design patterns 如何避免连接到comet服务器时丢失web推送通知
我想知道如何确保客户端在加载页面或连接到comet服务器时不会错过推送事件Design patterns 如何避免连接到comet服务器时丢失web推送通知,design-patterns,web-applications,comet,Design Patterns,Web Applications,Comet,我想知道如何确保客户端在加载页面或连接到comet服务器时不会错过推送事件 例如,考虑这个时间线: ... Request web page . Receive response . render page . execute javascript to connect to comet server . connection established + + (receiving comet events) + Request another web page . Receive respons
例如,考虑这个时间线:
...
Request web page
.
Receive response
.
render page
.
execute javascript to connect to comet server
.
connection established
+
+ (receiving comet events)
+
Request another web page
.
Receive response
.
execute javascript to connect to comet server
.
connection established
+
+ (receiving comet events)
+
显然,在a+标记的时间段内,客户机可以接收来自comet服务器的事件。但是,在其他时间内,没有连接,因此用户将如何接收这些时间内发生的事件
是否有人有任何设计模式或架构建议来确保事件不会错过
提前感谢。拥有comet调用从中读取的每会话消息队列。新事件进入队列,并在客户端连接时等待。根据您的体系结构和规模,这可以是web应用程序本身中的简单队列、数据库中的表或单独的消息队列。您可以在交付时将其删除。通用解决方案 在使用Comet服务器时,将客户端标志设置为它接收的每个事件都“已看到” 问题 如果每个客户端都需要响应每个通知,则到服务器的流量可能会显著增加。因此,您的服务器性能和网络可能会受到影响 您的解决方案可能会考虑其他事项,如事件顺序 解决问题 您必须采用的解决方案将取决于对此类事件的了解对应用程序的重要性。如果客户端能够按照预期工作,甚至丢失一些事件,那么考虑一个更轻松的解决方案。
这些想法可以使用Comet服务器上的队列来实现,但一定要正确实现。如果这些事件的顺序很重要,那么您必须在实现时确保它。请确保不要制造巨大的队列或不确定的队列。考虑其他方面。 希望我能帮忙