我想實現一個實時消息的功能,例如在臉書上聊天,但有幾個問題讓我困惑:
1.爲了減少服務器的開銷並使其成爲真正的「實時」,我應該使用全雙工像socket這樣的通信而不是Ajax,是嗎?
2.如果我使用套接字,我應該選擇哪種協議,TCP或UDP?
3.假設我正在使用TCP,服務器是否會繼續嘗試重新發送丟失的包,這樣會花費很多開銷?
4.如果網絡在服務器和客戶端之間的通信中失敗會怎麼樣?套接字是否會自行關閉,或者我應該處理幾種網絡條件?
任何人都可以幫忙嗎?服務器推送或客戶端請求? TCP還是UDP?
0
A
回答
0
您可以使用WebSockets。 XMLHttpRequest的,現在可能是過時的東西實時(因爲它不是實時的),雖然你可能回落到使用它誰使用瀏覽器的人不支持WebSockets的
-
使用UDP,如果您發送的信息僅在發送時間內有效,例如在作爲玩家位置的遊戲中(您不希望在5秒前收到他們的位置)。此外,你不能使用UDP與WebSockets
對於其他任何東西,使用TCP(除非你打洞來實現P2P),因爲數據丟失可能對你不利,TCP處理它。
你將不得不檢查反正手動重新發送UDP數據丟失,除非通信失敗是可以接受的,你
,你會得到一個IOException。如果連接沒有正確關閉,那麼在您可以根據您的需要更改無響應超時之後,將拋出異常。假設您使用TCP,否則當您根據您收到的響應/數據(或未收到)考慮客戶端連接或斷開連接時,應該自己想清楚。
-1
相關問題
- 1. android客戶端服務器UDP或TCP?
- 2. Python「推送服務器」tcp客戶端
- 3. UDP服務器,TCP客戶端?
- 4. TCP/UDP客戶端/服務器程序
- 5. REST API請求應該是客戶端還是服務器端?
- 6. 我應該做API請求服務器端還是客戶端?
- 7. 確定請求是來自服務器還是客戶端c#
- 8. 如何區分客戶端是否使用TCP或UDP從服務器端
- 9. Apple推送通知服務使用UDP還是TCP?
- 10. 客戶端服務器 - (TCP)
- 11. TCP客戶端服務器
- 12. UDP服務器和UDP客戶端
- 13. 客戶端 - 服務器按鈕請求
- 14. txjsonrpc服務器與請求客戶端
- 15. 客戶端從服務器請求
- 16. udp服務器根據從udp客戶端收到的請求做出響應
- 17. 服務器端從另一個客戶端獲取GET請求時推送到客戶端
- 18. 處理大量客戶端:UDP或TCP?
- 19. 社交媒體提要 - 客戶端或服務器端請求?
- 20. Heroku上的Java TCP/UDP服務器和客戶端
- 21. 使用boost的C++中的TCP和UDP客戶端+服務器
- 22. TCP客戶端發送數據,但TCP服務器收到空
- 23. 用於客戶機/服務器網吧軟件的TCP或UDP?
- 24. udp客戶端服務器程序c
- 25. UDP客戶端和服務器連接
- 26. 客戶端服務器udp套接字
- 27. 客戶端服務器udp mac與windows
- 28. UDP客戶端 - 服務器問題
- 29. Ping服務器和Ping客戶端(UDP)
- 30. 雙向UDP客戶端和服務器?
我建議你嘗試TCP並找出答案。你可能試圖解決那些對你來說不成問題的問題。 :) –
我只是不知道如何處理不同的網絡條件。感謝您的建議,我會盡力。 :) – dastan
幾乎所有錯誤都會導致IOException。如果您嘗試從連接讀取(),您將能夠檢測到連接已關閉。 –