2013-04-30 92 views
0

什麼是推動數據實時客戶端的最佳方式?當我遇到這個難題時,我正在使用新的html5歷史API在測試網站上工作。使用AJAX實時搜索?

我使用Twitter的API,使學習之用實時搜索,但

所以,我明白,你基本上可以一遍又一遍提交表單,垃圾郵件PHP不休,但是這似乎並不像很好的解決方案。

什麼是被創建的數據來獲得數據的最佳方式? (使用jQuery,最好)

謝謝,大衛

編輯:我看着推進引擎,但有是一個辦法做到這一點,而不必購買服務,對不對?

+0

對於推送技術,你沒有買任何東西,如果你已經擁有一臺服務器? – Bergi 2013-04-30 14:38:34

+0

我不知道有什麼事情的當前狀態的,但爲了讓服務器推送的連接需要保持開放。這是你想從網絡服務器上得到的東西嗎?特別是如果連接長時間沒有做任何事情。有些客戶端可能支持websocket,不確定服務器發送的事件。它曾被稱爲彗星技術:http://en.wikipedia.org/wiki/Comet_%28programming%29我的猜測是,服務器和客戶端發送正確的頭(連接:保持活着)與高時間到。 – HMR 2013-04-30 14:41:24

+0

只是在做這個教育目的,我不認爲我會想推送服務器。我想我會調查網絡套接字和輪詢 – Alice 2013-04-30 17:09:40

回答

1

有兩個(比實際更多,如果你有瀏覽器插件如Flash)可能的解決方案我看到:的WebSockets和投票。你不喜歡投票的想法,我會同意,這取決於情況。輪詢具有保持用戶會話存活的缺點 - 即他們永遠不會註銷 - 如果它輪詢同一個域。但是,如果您將其設置爲每5秒輪詢一次,假設您設置爲檢查新數據,則負載非常小。有了jQuery,你可以實現一個setInterval來輪詢(因爲我相信你已經調查過了)。在另一個說明... WCF引入了一個稱爲輪詢雙工的基於HTTP的TCP-socket-like連接,允許客戶端和服務器進行通信,就好像它們通過TCP連接一樣。你可以查看這些表現 - 如果你想以某種方式實現,那並不是那麼糟糕。我使用Silverlight來實現這一點。 Websockets是一種相對較新的技術,可以爲您提供雙向溝通,但您將客戶限制爲使用支持這些技術的瀏覽器的客戶。您還必須處理瀏覽器特定的問題。

+0

謝謝你提供的信息豐富的答案。我會研究網絡套接字和投票,並與我的學習冒險的人一起工作(我堅信不要使用諸如flash和silverlight等插件的網站)。因爲我將使用API​​來獲取我的信息,但是,似乎5秒輪詢可能是最佳選擇。我現在在打電話;稍後將研究websockets。再一次,謝謝:) – Alice 2013-04-30 17:06:07

+0

剛剛試用了php的websockets。不可靠。我想我會堅持投票。 – Alice 2013-04-30 19:43:18