2011-06-09 21 views
7

是否有可能使用jQuery來保持打開HTTP連接和數據流?流JSON片段到jquery

從我的Web服務器,我得到的(每個JSON對象是用換行分隔)

HTTP/1.1 200 OK 
Content-Type: text/plain 
Transfer-Encoding: chunked 

{"a":{"uptime":15876}} 
{"a":{"uptime":15877}} 
{"a":{"uptime":15878}} 
{"a":{"uptime":15879}} 
... 

在我的網頁我做如下:

$.ajax({ 
     type:  "GET", 
     url:  'http://server/stream', 
     data:  function(data) { console.log("data="+data); }, 
     timeout: 20000, 
     dataType: "text", 
     error:  function(XMLHttpRequest, textStatus, errorThrown) { console.log(textStatus); }, 
     success: function(data) {console.log("done"+data); }, 
     cache:  false 
    }); 

我看不到輸出Firebug聲稱對HTTP請求沒有響應,我在Firefox標籤中看到一個微調。

tcpdump表明數據正在被瀏覽器接收,但我從來沒有看到任何控制檯日誌,就好像它們完全被打印完畢一樣。

我缺少什麼?

回答

2

你正在做的事情被認爲是long polling。這是不容易實現與jQuery的,你可能想看看,這可能是矯枉過正,是一個非阻塞服務器技術像node.js與你可以使用此plugin與jQuery。

1

不是。瀏覽器不會將數據傳遞給jquery,直到連接關閉,因此它不會按照您想要的方式工作。

您需要使用類似socket.io或遺憾忽略的hookbox來爲您管理websocket連接。