在底部,它是所有关于socket通信。 如果有办法让两个用户的IP,为什么不能连接是用户,而不必走通的中间服务器之间直接建立?
Answer 1:
我的2美分:
没有人在那里迫使我们有一个基于服务器的实时通信模型。 逸岸XMPP有称为扩展“无服务器消息” ,它定义了如何通过本地或广域网使用的端点发现和XML流的语法和XMPP消息进行实时通信零配置网络的原则进行通信。 该方法使用基于DNS的服务发现和多播DNS发现支持该协议的实体,包括它们的IP地址和优选的端口。
P2P聊天应用已经超过十年了。 有在中间的服务器是纯粹取决于你的应用程序需要的决定。 如果您的应用程序可以在用户进行在线/离线状态之间的转换聊天迷路生活,那么你就可以很好的有一个直接的P2P模式去。 同样,也有一个负载和优势负载(联系人列表管理,头像,实体发现,存在授权,离线消息,....),当谈到选择一个基于服务器消息模型。 如果你试图让你的基于P2P的客户端内的所有这种权利,他们可能会死,或因为他们将需要自己来完成所有的工作下进行。
“的WebSockets”没有被设计用于P2P /无服务器通信,而其目的是为了提供一个标准化的PUSH语义上无状态HTTP协议。 总之,“的WebSockets”是替换哈克彗星,长轮询,分块编码-,JSONP,iframe的基于和其他各种技术的开发一直在使用,以模拟通过HTTP服务器推送的标准方法。
Answer 2:
命名的WebSockets(如果哪天它完全和广泛支持的)可能是解决方案。
http://namedwebsockets.github.io/spec/
命名的WebSockets是在各种协作本地设备和本地网络方案的有用: 发现当地的设备和/或本地网络上的匹配等服务 。
Answer 3:
用户之间的直接通信是可能的点对点(P2P)网络。 在P2P每个参与者可以作为客户端和服务器。 但是,P2P网络,你需要编写一个单独的程序,让沟通成为可能。
网络套接字让你利用现有常见的浏览器作为客户端。 一切都取决于你是什么应用程序以及如何要部署它的目的。
Answer 4:
如果有一些办法让这两个用户的IP
你就在你的问题钉答案。
大多数的机器我用有IP地址192.168.0.10
(或类似192.168.
专用网络)和深,深的后面几层NAT 。 有了空闲的IPv4地址池和IPv6远不及视线的结束,这是大多数用户生活的现实。 有知, 可路由的地址的稳定中介可以帮助解决这个问题,一吨的工作。
Answer 5:
的WebSockets不允许套接字侦听连接,只为在客户端连接到服务器(不反向)。 从技术上讲,他们可以把它允许这样做,但据我了解规范目前不(也不是预期)允许监听WebSockets功能。
新的WebRTC( http://www.webrtc.org/ )规格看起来似乎是支持对等网络连接。 我已经与WebRTC使用了在所有所以我不是在一个位置上对此发表评论。 我认为这将是一个有点比WebSocket的东西更多地参与。 也许有人谁知道的WebRTC可以更好地附和。(也除了Chrome浏览器的最新版本,我不知道是否有任何其他浏览器的真正支持的WebRTC还)。