我有一个有几个客户端的服务器。我想在给定的时间将消息推送到特定的客户端。客户端不应轮询到服务器。解决这个问题的好模式和做法是什么?
发布于 2013-06-10 04:39:04
您可以使用一种经常被称为长轮询或彗星的技术,它允许实现基于“推送”的事件/更新系统。
这一原则相当简单:
这样客户就不会定期投票了。但是,这意味着在任何给定的时间都可能保持大量连接的活动,因此请确保您了解这种方法对服务器的影响。
因此,不管您的平台是什么,底层的原则都是一样的:只要您能够发送HTTP请求并同步或异步地等待响应,就有一种实现长轮询的方法。
由于大多数编程语言的目标是开发桌面解决方案(或“重型”客户端),您通常会求助于常用的网络工具:套接字。
如果我们讨论的是在基于浏览器的解决方案中构建丰富的web客户端,您可以选择:
XMLHttpRequest对象(服务器只有在有东西要发回时才会回复,此时客户端要么重新启动另一个连接,要么在打开多个连接时使用备用连接,以确保随时打开多个通道),<script>标记查询URL,返回封装在调用客户端上下文中的函数中的有效负载(参见JSONP),WebSocket API与HTML5一起引入,请注意,就像web技术中经常出现的情况一样,跨浏览器支持需要进行广泛的测试,如果您针对恶意的浏览器市场份额,您可能会被迫使用上述技术的组合。
https://softwareengineering.stackexchange.com/questions/201003
复制相似问题