我目前正在使用Tornado(python)中的状态仪表板。每当调用外部函数时,我都需要让网页动态更新(通过重新渲染模板)。我很好奇最有效的方法是什么?并且是他们的任何类似的教程。
答案 0 :(得分:1)
如果您想要实际的服务器推送,那么您将需要webSocket或服务器发送的事件。由于服务器发送的事件非常新(并且在很多浏览器中都不支持),因此实际服务器推送的主要选项是webSocket连接。
在webSocket架构中,客户端连接到服务器,然后保持连接。这允许服务器随时通过该连接向客户端发送数据。
服务器发送的事件是一种类似的体系结构,但具有不同的实现细节,如何使用它。
没有办法将Ajax用于实际的服务器推送。 Ajax有时用于通过使用通常称为长轮询的模拟服务器发送的事件。在这种情况下,客户端进行Ajax调用,服务器暂时挂起Ajax请求,而不是立即返回响应。如果服务器端事件在此期间到达,则服务器可以获取等待响应的连接并发送响应。客户端将获得响应,处理它然后进行另一个Ajax调用。在长轮询中,如果一段时间后没有发生服务器端操作,则Ajax调用超时,客户端必须启动新连接。
具有长轮询的整个连接序列通常不如webSocket连接有效。因此,如果您尝试解决的主要问题是服务器推送,那么webSocket连接可能是获得广泛支持的最有效方式。
以下是一些类似的问题和答案,其中包含更多讨论:websocket vs rest API for real time data?和Ajax vs Socket.io。