我目前正在使用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. 播放WebSockets服務器推送示例
- 3. ajax推送服務器
- 4. AJAX,服務器推送實施問題
- 5. WebSockets服務器
- 6. 當推送到Heroku服務器(Django)
- 7. 當服務器持續推送XML時使用dataSet.ReadXml
- 8. JQuery - 發送服務器請求時的全局函數調用
- 9. $ .ajax函數:發送json數據:解析服務器端函數
- 10. Websockets發送垃圾到服務器
- 11. 如何通過websockets接收服務器推送時保持狀態?
- 12. 當節點服務器崩潰時,jQuery Ajax函數不響應
- 13. jQuery服務器端推ajax
- 14. WebSockets的服務器
- 15. 服務器端回調函數ajax web服務asp.net
- 16. 會話超時服務器推送Torquebox2
- 17. Gitolite錯誤時推送到服務器
- 18. Git錯誤時,推送到服務器
- 19. 發送Ajax調用時出錯[內部服務器錯誤500]
- 20. 用json數據向服務器發送ajax調用
- 21. 從服務器Vaadin7容器更新 - 要使用服務器推送或不
- 22. Git推送到服務器
- 23. grails服務器推送
- 24. 從ftp服務器推送
- 25. Sinatra服務器推送?
- 26. CGI/Python服務器推送
- 27. 服務器推送消息
- 28. C#iPhone推送服務器?
- 29. Laravel服務器推送
- 30. Git推送服務器?
只是額外的貢獻:所有瀏覽器都支持除IE以外的SSE,但您可以使用現有庫爲SSE提供基本支持。 當通信在一個方向(服務器到客戶端)時,我總是會選擇SSE,因爲它更容易實現,而且您不必關心連接失敗和處理重新連接。 如果您使用java,也許這是有用的:https://github.com/mariomac/jeasse – Mario
謝謝!我正在努力實現web-sockets現在,但我想看看SSE,你知道任何教程使用python/Tornado嗎? –