2012-03-13 128 views
0

我正在編寫一個調試/管理節點服務器,它允許用戶在機器上執行長時間運行的進程。我想將子進程的輸出流式轉換爲他們開始操作的形式。使用Javascript進行HTTP正文流式傳輸

我可以用插座做到這一點,但我必須讓客戶端訂閱頻道,我不得不消息發佈到整個信道時,他們只需要與一個客戶做的。

我寧願能流的HTTP主體到客戶端。我可以很容易地用node實現:只要繼續寫請求的socket,完成後調用end。

有沒有辦法使用XhrHttpRequest來調用Web服務,它已觸發事件,每當新的數據是可用的,並且當它關閉最後的事件?可能與jQuery?

請注意,這是不是真的一樣使用情況正常實時更新,爲此,插座是一個不錯的選擇。這是一個單一的請求。我只是想得到答案。

+1

聽起來[長輪詢(http://stackoverflow.com/questions/333664/simple-long-polling-example-code) – Marshall 2012-03-13 17:42:12

+0

我知道這聽起來像,但我不想投票。我想保留對單個請求套接字的引用,並不斷向其中傳輸數據。長輪詢需要一些其他方式來保持數據(不僅僅是請求的範圍) – 2012-03-13 17:52:50

+0

雖然你不想使用套接字,但它似乎是最好的。你可以通過[socket.io](http:// socket)連接一個客戶端。io /),然後將數據發送到單個(單個)套接字直到完成。 – Marshall 2012-03-13 18:07:27

回答

1

我希望是不可能的:你不能讓一個XHR http請求,並保持開放,同時解析塊。

這裏是人的建議

  1. 使用socket.io無論如何,改變你的架構,以支持推動事件的摘要。
  2. 使用socket.io,但通過它發出請求,就好像你正在打網址一樣。在socket.io的服務器端創建一個小型url路由器,然後將所有內容流式傳輸。
  3. 保持最初的HTML頁面打開並解析它,你去(不可行我的執行)
  4. (3),但在一個隱藏的iframe。

我有2

-1

幾年前,我用在開放的HTTP響應「JavaScript的」流。 (年AJAX出現之前)

的想法在這裏:寫的

<script type="text/javascript">do js stuff here</script> 

塊你想要的客戶反應的過程的每個步驟。

它可能仍然有效。

+0

將信息寫入頁面並不困難。它隨着時間的推移從服務器中獲取大量的數據。 – 2012-03-13 17:53:25

+0

我的意思是在服務器控制的時間在響應和刷新服務器中寫入