我正在使用node.js擁有多個客戶端。現在,在我的代碼中,我正在監聽一個端口,每次客戶端連接時,我都希望向所有其他客戶端發送廣播消息。每次有新客戶連接時,我都會舉辦一個新活動,我會向他發送回覆。當我說response.end()時,我無法發送任何內容到那個特定的客戶端。但是,瀏覽器不斷加載並等待response.end。 反正有沒有沒有使用socket.io? 我知道socket.io有它的用途,但我真的想知道如果我可以做到這一點沒有socket.io。連接在node.js中與response.end丟失
回答
我想說在你的客戶端使用兩個通道;一個用於接收更新(頻道保持打開狀態,或者頻繁查詢更新),另一個用於刷新數據。它涉及到一些重組客戶端和服務器的工作,但我認爲使用兩個通道是解決問題最簡單的方法。
如果您不發送.end(),瀏覽器將一直等待。但是,如果關閉頻道,則無法通過它發送任何內容。所以,要麼使用socket.io,要麼通過XHR打開一個通道,並保持打開,以便每個客戶端都能接收消息。儘管如此,你需要充分地構建消息(實現你的應用程序協議)。我認爲保羅是對的。
沒錯,我正在嘗試像你說的那樣使用XHR,並且保持開放。但是對於XHR,我只想說connection = keep-alive對不對?有沒有其他地方我必須指定使用XHR打開它? – wittythotha
連接:keep-alive是一個頭文件,您可以指定打開連接,但是如果您正在使用jQuery,我認爲它已經爲您設置。 – Claudio
嘗試長時間輪詢,這意味着讓瀏覽器發出一個「掛起」請求,直到服務器發送回來。
How do I implement basic "Long Polling"?
使用的NodeJS,你可以很容易地存儲客戶端的響應對象。
- 1. 連接丟失
- 2. Spring MqttPahoMessageDrivenChannelAdapter丟失連接:連接丟失;正在重試
- 3. Spring Mqtt:MqttPahoMessageDrivenChannelAdapter - 丟失的連接:連接丟失;正在重試
- 4. 丟失的連接
- 5. WinDivert連接丟失
- 6. SSIS連接丟失
- 7. SSH連接丟失
- 8. NSURLConnection丟失連接
- 9. 套接字丟失連接
- 10. Weinre與Windows Phone 8連接丟失?
- 11. Google Stackdriver與Dataproc丟失連接
- 12. 與調試器的連接已丟失
- 13. 在C中丟失連接mysql
- 14. 在PHPUnit中模擬丟失的連接
- 15. 藍牙連接在Android中丟失
- 16. NodeJS + Socket.io連接丟失/重新連接?
- 17. 頻率連接丟失與連接到Beaglebone黑色的PS3
- 18. MYSQL connector.net連接丟失
- 19. 丟失連接 - PHP,MySQL的
- 20. Aptana studio FTP連接丟失
- 21. 丟失連接(32109) - java.io.EOFException(MqttAndroidClient)
- 22. PostgresSQL PGCopyOutputStream丟失連接
- 23. 丟失連接到「iPhone」
- 24. 休眠/ Mysql,連接丟失
- 25. Android - WebService連接丟失
- 26. SQL連接不丟失行
- 27. C#MySQL丟失連接
- 28. HttpWebRequest和連接丟失
- 29. ASP.NET連接丟失處理
- 30. 網絡連接丟失NSURLConnection
感謝您的快速回復,但無論哪種方式,我將不得不指定一個response.end(),並且似乎每次都會結束我的連接。所以,我無法在此之後再向客戶端發送消息。如果我保持清爽,而不是node.js,我可以只是有一個普通的服務器和客戶端不時輪詢正確的?所以,我試圖避免這種情況。通過兩個渠道,你是指所有客戶都在兩個渠道? – wittythotha