Rest 要更新通知的客户端web应用程序?

Rest 要更新通知的客户端web应用程序?,rest,web-applications,web,Rest,Web Applications,Web,我是否可以避免将来自ping服务器的客户端应用程序的定时事件用于事件更新 我正在使用Angularjs、Nodejs expressjs来构建我的web应用程序 我能想到的另一种选择可能是socket.io 我能做点像这样的事吗 app.post('/abc', function(req, res){ if(event){ res.send('event data'); } }); 在事件发生之前,上述app.post不会返回 有多种方法可以实现推送通知: HTTP长轮询:客户端启动

我是否可以避免将来自ping服务器的客户端应用程序的定时事件用于事件更新

我正在使用Angularjs、Nodejs expressjs来构建我的web应用程序

我能想到的另一种选择可能是socket.io

我能做点像这样的事吗

app.post('/abc', function(req, res){
 if(event){
   res.send('event data');
 }
});

在事件发生之前,上述app.post不会返回

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

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

从链接