我開發了一個基於網絡的應用程序,其中登錄的用戶應該向服務器發送消息,告訴他每3秒仍處於聯機狀態。該消息隨後由服務器處理,並在Mysql中調用存儲過程以將用戶的狀態設置爲聯機。 我看過類似的問題,其中Comet和Ajax進行了比較(here或here),但考慮到3秒延遲是可以接受的,並且最大用戶數1000在系統中聯機,使用Ajax是一個明智的選擇,或者Comet應該是用過的?Ajax vs Comet(不是聊天應用程序)
回答
對於這種功能彗星是比較合適的:
- 你的客戶發送郵件(我在線)
- 您的服務器廣播處理過的消息(用戶X仍然在線)
以ajax的方式,你只向服務器提供消息。
爲了以ajax的方式獲得「廣播效果」。你最終會做類似彗星的事情,但帶寬效率較低。
阿賈克斯:
- 客戶端發送服務器 - 我在
- Server進程
- Server發送回用戶客戶列表中
在這種情況下,每一個客戶問每3秒鐘將數據庫中的COMPLETE「in」列表中。
在彗星:
- 客戶端X發送服務器 - 我在
- Server進程
- 服務器發送回客戶端小號用戶X仍然在線
在這種情況下,每個客戶端都會每隔3秒告訴服務器他所在的位置。 服務器發送回每個連接的客戶端ONLY x是仍處於
彗星僅僅是播放回來,郵件推送到客戶端 阿賈克斯是推動客戶的信息到服務器的技術,而無需刷新所有頁面的技術。
引述維基百科: http://en.wikipedia.org/wiki/Comet_%28programming%29
彗星是由其他幾個名稱,包括阿賈克斯推,反轉Ajax,雙向的Web,HTTP流,和他人之間的HTTP服務器推送。
,所以還是彗星:)
如果你不播什麼,然後簡單的Ajax是最好的選擇
服務器不會將任何內容廣播回客戶端。它只是在客戶端收到消息時調用Mysql中的過程。該過程基本上是一個SQL語句。 –
然後阿賈克斯更合適 – Krilivye
在這種特殊情況下,因爲你不需要任何信息從服務器發送到客戶端,我相信Ajax是更合適的解決方案。客戶端每隔三秒鐘告訴服務器它已連接,數據庫已更新,並且已完成。
這當然可以使用Comet來完成,在這種情況下,您基本上會ping每個註冊的客戶端以查看它是否仍處於連接狀態。但是,您仍然需要針對每個響應客戶端的數據庫運行查詢,而且您仍然需要客戶端在初始連接時通知服務器。所以,在我看來,彗星會比它的價值更麻煩。唯一可能有意義的是,如果您可以ping每個註冊的客戶端並將響應存儲在內存中,那麼一旦所有客戶端被ping通,您就可以運行一個查詢來更新其所有狀態。這會讓您在客戶端斷開連接時立即知道,而不是等待超時。不幸的是,這超出了我對Comet的專業知識範圍,所以在這一點上,我無法幫助實際執行它。
- 1. Comet vs Ajax聊天
- 2. 如何在JSP聊天應用程序中使用Comet
- 3. android聊天應用程序 - ListView vs ScrollView
- 4. 聊天應用程序:pubsubhubbub vs xmpp
- 5. COMET與經典的AJAX聊天
- 6. 如何在PHP應用程序中集成COMET聊天
- 7. AJAX在聊天應用程序中
- 8. 聊天應用程序 - Socket.IO/Angular/MongoDB - 不顯示聊天和聊天記錄
- 9. Android聊天應用程序
- 10. JavaFX聊天應用程序
- 11. ASP.NET聊天應用程序
- 12. Opa聊天應用程序不工作
- 13. XHR不適合聊天應用程序?
- 14. xmpp是否適用於聊天室應用程序(不是Messenger)?
- 15. COMET聊天應用程序 - IIS7減慢隨着時間的推移
- 16. 不使用IFrame的Comet應用程序
- 17. ASP.NET中的聊天應用程序
- 18. 聊天應用程序 - 最佳方式
- 19. ASP.NET一對一聊天應用程序
- 20. Php聊天應用程序問題
- 21. Java單線程聊天應用程序
- 22. C#TCP聊天應用程序線程
- 23. 聊天應用程序:node.js或APE?
- 24. 基於Web的聊天應用程序
- 25. 攝像頭聊天應用程序 - p2p vs fms
- 26. Apache vs Nginx的聊天網絡應用程序
- 27. 使用PHP,MySQL和Ajax的聊天應用程序
- 28. 使用php和ajax的聊天應用程序:
- 29. 在聊天應用程序中發送多聊天通知
- 30. 如何使聊天應用程序,一對一聊天UI
正如您所描述的,您需要每3秒鐘將數據從客戶端發送到服務器。所以爲了您的需要,您可以使用AJAX。無論何時您想將信息從服務器推送到信息可用性未知的客戶端,您都可以考慮Comet。 – Seshagiri
websockets ftw ;-) – zerkms
Web套接字不是一個選項,因爲應用程序應該能夠在IE上運行 –