每当调用函数时都进行服务器推送:Ajax或WebSockets

问题描述 投票:0回答:1

我目前正在使用Tornado(python)中的状态仪表板。 每当调用外部函数时,我都需要使网页动态更新(通过重新渲染模板)。 我很好奇,最有效的方法是什么? 并且他们的任何教程都适用于类似的东西。

ajax python-3.x websocket tornado
1个回答
1
投票

如果需要实际的服务器推送,则将需要webSocket或服务器发送的事件。 由于服务器发送的事件是非常新的事件(很多浏览器都不支持),因此实际服务器推送的主要选择是webSocket连接。

在webSocket体系结构中,客户端连接到服务器,然后保持连接状态。 这允许服务器随时通过该连接向客户端发送数据。

服务器发送的事件是类似的体系结构,但是使用方式不同,实现细节也不同。


无法将Ajax用于实际的服务器推送。 有时使用Ajax通过使用通常称为长轮询的方式来模拟服务器发送的事件。 在这种情况下,客户端进行Ajax调用,而服务器只是挂在Ajax请求上一会儿,而没有立即返回响应。 如果在此期间到达服务器端事件,则服务器可以建立等待响应的连接并发送响应。 客户端将获得响应,对其进行处理,然后进行另一个Ajax调用。 在长时间轮询中,如果过一会儿没有发生服务器端操作,则Ajax调用将超时,并且客户端必须启动新连接。

具有长轮询的整个连接顺序通常比webSocket连接的效率低。 因此,如果您要解决的主要问题是服务器推送,那么webSocket连接将可能是受到广泛支持的最有效方法。

以下是一些包含更多讨论的类似问题和答案: websocket与rest实时数据API?Ajax vs Socket.io

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.