2011-02-23 24 views
1

我試圖用Node.js的實施彗星(XHR流)因爲,XHR流使客戶端XHR.responseText保持增長,這是必要的客戶端關閉當前XHR並重新啓動XHR流。Node.js如何檢測瀏覽器端已結束一個HTTP會話?

在服務器端,每個XHR流,該http.ServerResponse對象應該被保持到HTTP會話結束。

的問題是:如何能Node.js的檢測瀏覽器端已經結束了一個HTTP會話?

我認爲,理想情況下,有一個回調參數http.ServerResponse.write。因此,寫入一個關閉的HTTP會話會觸發回調,並讓我們知道它會中止。但是,沒有這樣的回調參數。

回答

0

什麼作爲@macarthy已經提到:socket.io是用node.js中去彗星的實現方式

但是,如果你想實現XHR流自己,應該有每個http.ServerResponse稱爲「結束」的事件。這個事件在每個會話中觸發一次,沒有任何參數來通知你的應用程序一個封閉的響應。

0

我一直使用類似..

var server = http.createServer(function(req, res) { 
    req.socket.addListener("end", function() { 
     ///he gone 
    }); 
}); 
+0

如果HTTP Keep-alive處於打開狀態,它會工作嗎?一個套接字連接可能會服務多個http會話。 – 2011-03-06 04:07:46

+0

我不能肯定地說,但由於套接字位於http堆棧之上,我認爲這並不重要。 – 2011-03-06 19:57:17

1

req.socket似乎並沒有被公佈的財產。我曾經使用過:

res.connection.on('close', function() { 
... 
});