Rest Web通知服务模式,如Facebook或Twitter

Rest Web通知服务模式,如Facebook或Twitter,rest,web-applications,web,notifications,design-patterns,meteor,Rest,Web Applications,Web,Notifications,Design Patterns,Meteor,我从未在web客户端上做过通知服务,我只是想知道最常见的模式是什么 例如,如果服务器必须推送客户机,或者是客户机每分钟都需要获取服务器信息 或者如果有其他模式。这取决于您使用的web框架。有了这样一个现代的框架,服务器很容易将通知推送到客户端,并且可以自动进行多种显示更新,而无需构建通知机制来处理它们 请查看中列出的两个Meteor屏幕广播。实现推送通知的方法有多种: HTTP长轮询:客户端启动一个请求。服务器检查是否有任何新通知。无论是否有新通知,都会发送相应的响应并关闭连接。在X客户端启动另

我从未在web客户端上做过通知服务,我只是想知道最常见的模式是什么

例如,如果服务器必须推送客户机,或者是客户机每分钟都需要获取服务器信息


或者如果有其他模式。

这取决于您使用的web框架。有了这样一个现代的框架,服务器很容易将通知推送到客户端,并且可以自动进行多种显示更新,而无需构建通知机制来处理它们


请查看中列出的两个Meteor屏幕广播。

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

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


可以看出,HTTP协议是无状态的,一旦请求得到满足,服务器就不知道客户机,因此客户机有责任向服务器寻求更新。我对这个主题了解不多,但您可以研究一种长轮询或基于套接字的解决方案(类似于Signalr)