有沒有辦法讓JavaScript連接保持HTTP連接?如何保持HTTP連接活着?
回答
簡而言之,我認爲JavaScript中長壽命http連接的概念實際上是圍繞COMET的一種通信方式。這可以通過幾種不同的方式來實現,但本質上涉及客戶端(使用XmlHttp權力)立即從服務器請求數據,並且服務器拒絕響應,直到某個事件觸發爲止。一旦收到這個響應,客戶立即發出另一個請求(這將再次掛起在服務器端,直到需要發送)。這模擬服務器推送,但實際上只不過是以聰明的方式使用的延遲響應。在最壞的情況下,可能會有相當高的延遲(即2條消息需要發送,所以週期必須重複兩次,所有成本都涉及),但通常情況下,如果消息傳輸率較低,時間推移。
爲這種通信實現服務器端不是微不足道的,並且需要大量的異步通信,併發問題等。編寫一個可以在自己的線程上支持幾百個用戶的實現是相當容易的,但要擴展到數千個需要更多考慮的方法。
我注意到最後的答案是在2009年給出的。哦,我怎麼記得那些日子。但自那時以來發生了很多好事,所以我會添加這個只是爲了讓人們知道要尋找什麼。 HTTP 1.0提供了一個「保持活動」請求屬性,這意味着連接應該爲進一步的請求而維護。在HTTP 1.1中,這成爲默認值。如果你不想重複使用連接(如果你想要更好的話),你實際上必須選擇退出。
「WebSockets」的新標準實際上爲您提供了全雙工持久連接。所有最新版本的流行瀏覽器都支持WebSockets,如果您安裝Google Chrome Framework(即Google軟件實際上在做這項工作),您甚至可以在MSIE中使用它們。微軟表示IE在第10版中支持它,但我自己並沒有嘗試過。然後你需要的是連接到的東西,如http://highlevellogic.blogspot.se/2011/09/websocket-server-demonstration_26.html
- 1. 保持WebSocket連接活着
- 2. Tcp連接保持活着
- 3. 保持連接活着嗎?
- 4. HTTP連接:保持活躍
- 5. 重複連接:保持活着,保持活躍
- 6. 保持Java藍牙連接活着
- 7. Python的保持插座連接活着
- 8. 休眠屬性保持連接活着
- 9. 保持活着的Rtsp連接
- 10. HTTP響應連接保持活動
- 11. Tornado AsyncHTTPClient HTTP持久連接支持(HTTP保持活動)
- 12. 如何保持NSTimer活着?
- 13. 如何從Visual Fox Pro保持mysql連接活着
- 14. 如何保持一個MySQL連接活着libodbc.so
- 15. ePOS2 SDK:如何保持與打印機的連接活着?
- 16. 如何保持實體管理器連接活着?
- 17. C#/ MongoDB:我如何保持連接活着?
- 18. 如何在使用webrequest時保持連接活着?
- 19. 如何在java中保持連接活着
- 20. PHP MYSQL:如何保持變量活着,直到連接結束
- 21. TCP服務器/客戶端如何保持連接活着?
- 22. 保持活着(HTTP)的recv功能塊
- 23. 如何使Flask /保持Ajax HTTP連接處於活動狀態?
- 24. 安卓::保持網絡連接活着破壞活動
- 25. Shellscript發送消息到套接字並保持連接活着
- 26. 保持谷歌Cast接收活着和/或發送連接
- 27. PHP:連接:保持活着問題讀取套接字數據
- 28. HTTP套接字保持活着不起作用
- 29. 保持c3p0連接存活
- 30. 如何測試HTTP保持活着實際上正在工作
你究竟是什麼意思?你想模擬服務器推送? – Myles 2009-11-08 22:39:32
最好告訴我們你到底想要解決什麼問題。 – spender 2009-11-08 22:43:54
保持連接處於活動狀態以獲得更快的響應。我聽說這種技術被用在瀏覽器遊戲中,幾乎有實時行爲。 – powtac 2009-11-08 22:44:12