2

我从来没有在网络客户端上做过通知服务,我只是想知道最常见的模式是什么。

例如,如果服务器必须推送客户端,或者客户端需要每分钟获取一次服务器信息。

或者,如果有另一种模式。

4

2 回答 2

1

有多种实现推送通知的方法:

HTTP 长轮询:客户端发起请求。服务器检查它是否有任何新的通知。不管它是否有新的通知,都会发送适当的响应并关闭连接。在 X 客户端发起另一个请求之后(+ 非常容易实现 - 通知不是实时的。它们依赖于 X,因为数据检索是客户端发起的。随着 X 减少服务器上的开销增加)

HTTP 流式传输:这与 HTTP 长轮询非常相似,但连接没有关闭。服务器发送分块响应。因此,一旦服务器收到它想要推送的新通知,它就可以简单地写入套接字。(+ 比长轮询和几乎实时行为的延迟更低/关闭连接和重新打开的开销减少 - 内存使用客户端不断堆积/丑陋的黑客等)

WebSocket:基于 TCP 的协议提供真正的双向通信。服务器可以随时向客户端推送数据。(+ ve:真正的实时 - 一些较旧的浏览器不支持它)。阅读更多关于它的信息 WebSocket.org | 关于 WebSocket

现在基于技术堆栈,有各种可用的解决方案: (A) Nodejs:用于实时应用程序的跨浏览器 WebSocket。(为您完成繁重的工作。在不支持 websocket 的情况下优雅地退回) (B) Django:如前所述,您可以使用信号进行通知。您也可以尝试使用 django-websocket 0.3.0 来支持 websocket (C) Jetty / Netty 和 Grizzly(基于 Java):都支持 websocket

链接

于 2013-11-20T19:22:41.240 回答
0

这取决于您使用的 Web 框架。使用像这样的现代框架,服务器很容易向客户端推送通知,并且可以自动发生多种显示更新,而无需构建通知机制来处理它们。

查看http://meteor.com上列出的两个 Meteor 截屏视频。

于 2012-11-11T03:56:53.367 回答