2011-04-29 156 views
1

相當難以確定的問題,但基本上我想知道什麼是最好的方式(而不是「你的意見」,但「這將最充分地滿足我要提出的要求)是打開一個流連接從一個客戶端網頁到服務器,以便可以發送數據到另一個沒有輪詢?我想這個術語是HTTP綁定與HTTP輪詢。這裏的上下文是一個聊天應用程序 - 我想流式連接如此瀏覽器不會不斷推送請求,客戶端在這裏是KnockoutJS和jQuery,我希望能夠將數據來回推送爲JSON(或者至少可以通過jQuery和Knockout的toJSON操縱)。服務器端 - 不太清楚它會是什麼,但我可能會在Linux服務器上運行,所以任何兼容的東西都可以正常工作。 如果有更多的細節我可以提供,請讓我知道 - 我確信我留下了一些明顯的細節。此外,我知道這可能是一個重複的問題,所以如果你的答案是一樣好,關閉一個愚蠢,並在一個鏈接,這很好。 謝謝!打開TCP流到服務器的最佳方式是什麼?

+1

谷歌和搜索SO「彗星」,「反向AJAX」,「長期投票」。並在這裏看到:http://en.wikipedia.org/wiki/Comet_%28programming%29 – 2011-04-29 21:35:30

回答

1

我認爲你要找的就是彗星。基本思想是保持HTTP請求打開更長時間,以便服務器可以在客戶端發送數據時向客戶端發送數據,而不是客戶端必須不斷地輪詢服務器以獲取新數據。有多種方式來實現它。這個Wikipedia article是更多信息的好開始。

這個MIX 2011 video討論了長輪詢技術(儘管視頻中的建議是網絡套接字將成爲未來瀏覽器的更好解決方案)。

+0

看起來像AJAX長輪詢是我想要的...我正確地說,它會像一個簡單的jQuery' $ .ajax'請求在服務器端保持打開狀態,並在客戶端恢復後立即重新打開? – 2011-04-29 21:39:04

+0

Oooh,一個視頻!來自MIX,不能少!謝謝! – 2011-04-29 21:40:27

+0

@Thomas:afaiu並不那麼簡單。長期投票/彗星本質上是一個http黑客攻擊。你需要一個服務器來處理連接,並且我確信你需要一些特殊的js客戶端。彗星非常繁瑣而且不容易設置。 99.9%你最好只是定期對新數據進行Ajax請求。幾乎所有基於Web的聊天客戶端都是這樣工作的。 – 2011-04-29 21:43:19

相關問題