2011-07-25 113 views
2

我正在使用node.js擁有多個客戶端。現在,在我的代碼中,我正在監聽一個端口,每次客戶端連接時,我都希望向所有其他客戶端發送廣播消息。每次有新客戶連接時,我都會舉辦一個新活動,我會向他發送回覆。當我說response.end()時,我無法發送任何內容到那個特定的客戶端。但是,瀏覽器不斷加載並等待response.end。 反正有沒有沒有使用socket.io? 我知道socket.io有它的用途,但我真的想知道如果我可以做到這一點沒有socket.io。連接在node.js中與response.end丟失

回答

0

我想說在你的客戶端使用兩個通道;一個用於接收更新(頻道保持打開狀態,或者頻繁查詢更新),另一個用於刷新數據。它涉及到一些重組客戶端和服務器的工作,但我認爲使用兩個通道是解決問題最簡單的方法。

+0

感謝您的快速回復,但無論哪種方式,我將不得不指定一個response.end(),並且似乎每次都會結束我的連接。所以,我無法在此之後再向客戶端發送消息。如果我保持清爽,而不是node.js,我可以只是有一個普通的服務器和客戶端不時輪詢正確的?所以,我試圖避免這種情況。通過兩個渠道,你是指所有客戶都在兩個渠道? – wittythotha

0

如果您不發送.end(),瀏覽器將一直等待。但是,如果關閉頻道,則無法通過它發送任何內容。所以,要麼使用socket.io,要麼通過XHR打開一個通道,並保持打開,以便每個客戶端都能接收消息。儘管如此,你需要充分地構建消息(實現你的應用程序協議)。我認爲保羅是對的。

+0

沒錯,我正在嘗試像你說的那樣使用XHR,並且保持開放。但是對於XHR,我只想說connection = keep-alive對不對?有沒有其他地方我必須指定使用XHR打開它? – wittythotha

+0

連接:keep-alive是一個頭文件,您可以指定打開連接,但是如果您正在使用jQuery,我認爲它已經爲您設置。 – Claudio