我可以避免从服务器ping客户端应用程序中进行定时事件,以进行事件更新吗?
我正在使用Angularjs,Nodejs-expressjs来构建我的网络应用程序。
另一种我可以想到的替代方案socket.io。
我能做点什么吗
app.post('/abc', function(req, res){
if(event){
res.send('event data');
}
});
上述app.post将不会返回,直到事件发生。
答案 0 :(得分:0)
有多种方法可以实现推送通知:
HTTP长轮询:客户端发起请求。服务器检查是否有任何新通知。无论是否有新通知,都会发送相应的响应并关闭连接。在时间X客户端发起另一个请求后(+非常容易实现 - 通知不是实时的。它们依赖于X,因为数据检索是客户端启动的。随着X减少服务器增加的开销)
HTTP Streaming:这与HTTP Long Polling非常相似,但连接未关闭。服务器发送分块响应。因此,只要服务器收到想要推送的新通知,它就可以简单地写入套接字。 (+延迟比长轮询更低,几乎实时行为/关闭连接和重新开放的开销减少 - 内存使用情况客户端继续堆积/丑陋黑客等)
WebSocket:基于TCP的协议提供真正的双向通信。服务器可以随时将数据推送到客户端。 (+ ve:真正的实时 - 一些旧的浏览器不支持它)。阅读更多关于它的信息WebSocket.org |关于WebSocket
现在基于技术堆栈,可以使用各种解决方案:(A)Nodejs:用于实时应用程序的跨浏览器WebSocket。 (对你来说很重要。如果不支持websocket,优雅地回落)(B)Django:如前所述,你可以使用信号进行通知。您也可以尝试使用django-websocket 0.3.0来支持websocket(C)Jetty / Netty和Grizzly(基于Java):所有都支持websocket
来自链接