2012-01-27 111 views
0

我正在建立一個社交網絡,我希望它像facebook一樣流暢。
就像在控制檯中查看日誌一樣,它不會隨着ajax調用一直更新。jQuery服務器端推ajax

我的網站上我必須加載:通知(新的notifs和notifs本身的數量),朋友請求(與通知相同),在線的朋友(如果有任何在線,它會加載在線用戶的圖片。)這就是每隔10秒加載一次的ajax調用。這會造成巨大的帶寬浪費和服務器請求。

因此,我想,如果服務器告訴客戶有什麼新的更新,而不是每隔10秒詢問服務器的CLIENT會怎麼樣。

我已經使用了這個問題並閱讀了關於ajax push和一個名爲comet的框架。 我似乎無法找到關於如何在jQuery上實現這一點的任何信息。

+0

沒有試圖成爲一個混蛋,但試圖建立下一個Facebook沒有對網絡的客戶端/服務器協議的基本瞭解將會是一個艱鉅的任務。無論如何,jQuery是客戶端的JavaScript,所以不能從服務器'推送。但是,您可能需要查看「HTML5通知」 – 2012-01-27 21:03:24

+0

您是否考慮過實施一項cron作業,該作業將每x次執行一次服務器範圍的推送?它會加載一個文件,它會自行運行,但通常是您指定的。我使用定時器來處理服務器時間的能量棒,但每五分鐘通過一次cron作業更新它們。 – HenryGuy 2012-01-27 21:04:16

+0

即使服務器可以向客戶端發起請求,計算中通信的性質也是如此,以至於需要作爲一個監聽線程定期檢查接收到的消息。 – paislee 2012-01-27 21:05:43

回答

1

我簡單地看了彗星。它似乎是雄心勃勃的,實驗性的,不會在任何舊服務器上運行。

據我所知,Comet並沒有真正推動這種做法,而是做了一種叫做「長輪詢」的事情,我不想在這裏描述。網絡上已經有了關於這個主題的好幾篇文章。個人而言,我會堅持使用當前的計劃(傳統的AJAX),但是將所有必要的數據捆綁到對象和JSON編碼中進行一次通用調用。這將減少6個請求到一個(每10秒)。

您可以通過在返回的對象中返回空值來獲取未改變的信息,從而最小化每個響應的長度。

+0

是的,我明白你的意思。我沒有訪問服務器,這個彗星是我的方式。我會盡量打1個電話,但我不知道如何解決它;我打1個電話,這將返回6是或否,如果這是一個是的,我讓新電話對應的是?或者如果這是服務器返回的數據並且ajax調用可能包含6個結果?你喜歡哪個 ? – Flaashing 2012-01-27 21:19:16

+0

絕對是後者。 – 2012-01-27 21:21:57

+0

好吧,但我如何分割字符串,但數據在正確的變量? – Flaashing 2012-01-27 21:24:38

0

據我所知,您必須對您的網絡服務器進行重大修改才能使這件事情起作用。另外,服務器端的PHP不是一個很好的選擇。

有人已經在這裏問類似的東西:Using comet with PHP?

0

您可以嘗試socket.io上的node.js了。它適用於實時通信 http://socket.io/

+1

順便說一句,這個項目使用jQuery與彗星https://github.com/SeanOC/jquery.comet – 2012-01-27 21:08:55