最後,它是關於套接字通信的。如果有兩種方式來獲取這兩個用戶的IP,爲什麼不能直接在用戶之間建立連接,而不必通過中間的服務器?,爲什麼用戶之間需要實時通信服務器?
回答
我的2美分:
沒有人在那裏迫使我們有一個基於服務器的實時通信模型。 Infact XMPP有一個名爲"Serverless Messaging"的擴展,它定義瞭如何使用用於端點發現的零配置網絡以及用於實時通信的XML流和XMPP消息的語法的原理在本地或廣域網上進行通信。此方法使用基於DNS的服務發現和多播DNS來發現支持該協議的實體,包括其IP地址和首選端口。
P2P聊天應用已經有十多年了。中間有一臺服務器完全取決於您的應用程序需求。如果您的應用程序可以在用戶在在線/離線狀態之間轉換時丟失聊天,那麼您可以直接使用P2P模式。同樣,當涉及到選擇基於服務器的消息傳遞模型時,會有一些負載和優勢(聯繫人列表管理,頭像,實體發現,在線狀態授權,離線消息等)。如果您試圖在基於P2P的客戶端內部擁有所有這些功能,那麼他們可能會因爲他們自己需要執行的所有工作而死亡或執行不足。
「WebSockets」並非針對P2P /無服務器通信而設計的,而是旨在爲無狀態HTTP協議提供標準化的PUSH語義。簡而言之,「WebSockets」是取代hacky comet,long-polling,chunked-encoding,jsonp,iframe和其他技術開發人員用來模擬HTTP上的服務器推送的標準化方法。
用戶之間的直接通信在對等(P2P)網絡中是可能的。在P2P中,每個參與者可以充當客戶端以及服務器。但是對於P2P網絡,您需要編寫一個單獨的程序來使通信成爲可能。
Web套接字讓您利用現有的常見瀏覽器作爲客戶端。全部取決於你的應用程序的目的是什麼以及你想要如何部署它。
WebSockets不允許套接字偵聽連接,只能作爲客戶端連接到服務器(而不是反向)。從技術上講,他們可以允許這樣做,但據我所知,該規範目前並不期望(也不期望)允許WebSockets的偵聽功能。
新的WebRTC(http://www.webrtc.org/)規範看起來像它可能支持點對點連接。我還沒有玩過WebRTC,所以我不能評論它。我認爲這會比WebSocket更復雜。也許一個更瞭解WebRTC的人可以更好地參與進來。(除了最新版本的Chrome,我不確定其他瀏覽器是否真的支持WebRTC)。
可能是解決方案,命名爲WebSockets(如果有一天它得到了全面和廣泛的支持)。
http://namedwebsockets.github.io/spec/
命名的WebSockets是在各種協作本地設備 和本地網絡方案中很有用:查詢匹配對等服務 本地設備和/或本地網絡上。
如果有一些辦法讓兩個用戶
的IP你釘在你的問題正確的答案。
我使用的大多數機器的IP地址爲192.168.0.10
(或類似於192.168.
專用網絡),並且深深地落後於幾層NAT。隨着免費的IPv4地址池和IPv6的終結,這是大多數用戶所居住的現實。有一個已知的穩定中介,可路由的地址有助於解決此問題。
- 1. 服務器和客戶端之間的實時通信
- 2. 爲什麼或什麼時候應用需要服務器?
- 3. 服務器和客戶端之間通信的實現
- 4. 服務器端爲websocket需要什麼?
- 5. Silverlight和服務器端之間的通信方式是什麼?
- 6. 爲什麼我們需要通用服務定位器庫?
- 7. 與java socketSSL的客戶端 - 服務器通信。什麼證書真的需要
- 8. 爲什麼無服務器包需要信任?
- 9. 遊戲中多個用戶之間的網絡通信需要什麼?
- 10. 將http服務器轉換爲https服務器需要什麼?
- 11. 服務器之間的會話通信
- 12. 服務器之間的Coldfusion通信
- 13. 多個服務器之間的通信
- 14. 通信之間的兩個服務器
- 15. node.js服務器之間的通信
- 16. 用於單獨服務的EC2服務器之間的通信
- 17. Java客戶端/服務器通信,我需要學習
- 18. SSL通信期間Web服務器上是否需要私鑰?
- 19. Java服務器和Android手機之間的客戶端/服務器通信
- 20. 爲什麼socat在連接到Web服務器時需要「fork」?
- 21. 什麼是Microsoft SQL服務器,爲什麼需要安裝它?
- 22. Eclipse RCP客戶端和服務器之間進行通信所需的建議
- 23. 我需要在iOS上發送用戶對用戶推送通知時需要什麼樣的服務
- 24. 客戶端和服務器之間的通信
- 25. 客戶端與服務器之間的小程序通信
- 26. 在客戶端和服務器之間進行通信
- 27. java和php之間的簡單客戶端服務器通信
- 28. 啓動服務器和客戶端之間的通信
- 29. 服務器和客戶端之間的通信進度
- 30. Windows客戶端和Linux服務器之間的通信?
優秀的答案。我會補充一點,比較XMPP和websocket就像比較一輛車和一條路。一旦WebSocket規範固化 – Robin 2012-08-17 17:06:34
@Robin這真的取決於XMPP是指RFC 6120還是RFC 6121.XMPP-Core(6120)僅定義了流協議和數據報格式 - 完全像WebSocket協議。在你的比喻中,兩者都是道路。它是定義節的格式和含義的XMPP-IM(6121)。甚至有RFC 7395定義瞭如何通過WebSocket「驅動」XMPP-IM,而不是XMPP-Core。 – smoku 2016-08-25 09:43:42