我目前正在使用Tornado(python)的状态仪表板。当需要调用外部函数时,我需要动态更新网页(通过重新呈现模板)。我很好奇什么是最有效的方法来实现这一目标?并且是他们的任何类似的教程。每当调用函数时服务器推送:Ajax或WebSockets
0
A
回答
0
如果您想要实际的服务器推送,那么您将需要webSocket或服务器发送的事件。由于服务器发送的事件是非常新的(并且在很多浏览器中不支持),所以实际服务器推送的主要选项是webSocket连接。
在webSocket架构中,客户端连接到服务器,然后保持连接状态。这允许服务器随时通过该连接向客户端发送数据。
服务器发送的事件是一个类似的体系结构,但具体使用方式不同。
没有办法在实际的服务器推送中使用Ajax。有时使用Ajax通过使用通常称为长轮询的方式模拟服务器发送的事件。在这种情况下,客户端发起Ajax调用,服务器暂时挂在Ajax请求上,而不是立即返回响应。如果服务器端事件在此期间到达,则服务器可以接收等待响应的连接并发送响应。客户端将得到响应,处理它,然后进行另一个Ajax调用。在长时间轮询中,如果稍后没有发生服务器端操作,则Ajax调用超时,客户端必须启动新的连接。
长轮询的整个连接序列的效率通常低于webSocket连接。因此,如果您要解决的主要问题是服务器推送,那么webSocket连接可能是最有效的方式,并得到广泛支持。
下面是一些类似的问题和答案,其中包含更多的讨论:websocket vs rest API for real time data?和Ajax vs Socket.io。
相关问题
- 1. 服务器推送技术(aka。“COMET”,“http服务器推送”,“websockets”)
- 2. ajax推送服务器
- 3. $ .ajax函数:发送json数据:解析服务器端函数
- 4. Websockets发送垃圾到服务器
- 5. WebSockets的服务器
- 6. jQuery服务器端推ajax
- 7. 服务器端回调函数ajax web服务asp.net
- 8. 会话超时服务器推送Torquebox2
- 9. 当从烬服务器进行ajax调用时,cookie不发送到tomcat服务器
- 10. C#iPhone推送服务器?
- 11. Sinatra服务器推送?
- 12. 从ftp服务器推送
- 13. Git推送服务器?
- 14. CGI/Python服务器推送
- 15. Git推送到服务器
- 16. 用jquery调用服务器函数使用ajax
- 17. 调用一个函数,每次和AJAX请求被处理,并从服务器
- 18. 当推送到服务器时获取所有提交
- 19. 推送到jQuery数组每个循环和jQuery ajax调用
- 20. 使用$ ajax调用WCF服务时,获取s.Type.ToUpperCase()不是函数
- 21. 调用mobilefirst推送通知适配器时出错无法调用Google GCM推送服务
- 22. 503尝试将数据推送到Mongodb服务器时服务不可用
- 23. Ajax调用与服务器端调用
- 24. 发送时jQuery AJAX POST JSON错误?或&到服务器
- 25. 在JavaScript中的AJAX调用服务器端函数?
- 26. 使用Rails服务器推送通知
- 27. AJAX发送数据到Node.js服务器
- 28. 在hybi-10 WebSockets服务器中发送数据的问题
- 29. 跨服务器的WebSockets
- 30. PHP服务器和websockets
只是额外的贡献:所有浏览器都支持除IE以外的SSE,但您可以使用现有库为SSE提供基本支持。 当通信在一个方向(服务器到客户端)时,我总是会选择SSE,因为它更容易实现,而且您不必关心连接失败和处理重新连接。 如果您使用java,也许这是有用的:https://github.com/mariomac/jeasse – Mario
谢谢!我正在努力实现web-sockets现在,但我想看看SSE,你知道任何教程使用python/Tornado吗? –