javascript - PeerJS 或 WebRTC 对等连接是否需要服务器或仅在客户端之间?

标签 javascript chat webrtc peerjs peer-connection

<分区>

我正在从事一个项目,该项目应该允许用户相互联系(一对一)并通过网站聊天。如果我选择 http://peerjs.com/ WebRTC 对等连接的实现或其他自定义解决方案,我是否需要服务器来代理连接?如果是这样,它的目的是什么?我认为 WebRTC 对等连接的全部意义在于允许直接的用户到用户连接。

最佳答案

I thought the whole point of WebRTC peer connection was to allow for direct user-to-user connections.

直接用户到用户连接是指 P2P 连接,两个用户直接交换数据,中间没有任何中继服务器。但要让他们成为那样,他们首先需要相互联系。为此,他们需要彼此的 IP 地址和其他相关信息。

互联网上的两台设备无法知道彼此的地址,除非它们以某种方式在它们之间交换这些信息。这就是为什么要使用像 SIP、XMPP 这样的 Signaling 服务器。对等点登录到这些服务器以交换这些 IP 信息。当对等点 A 和对等点 B 登录到 SIP 服务器时,然后当对等点 A 想要与对等点 b 通信时,

1) A将其IP信息发送到sip服务器。 Sip 服务器会将此信息转发给 B。

2) 收到信息后,对端B将其IP地址发送给SIP服务器,SIP服务器将其转发给对端A。

3) 在他们都知道对方的 IP 信息后,他们就可以直接相互连接,而无需再次使用 SIP 服务器。

这就是P2P连接。它使用信令服务器仅在其 P2P 连接之后在对等点之间创建连接。

但是即使知道每个对等点的所有 Ip 信息,P2P 连接也不总是可能的。有一些NATs这使得无法创建 P2P 连接。但那是另一个话题。

希望这能消除您的困惑。

关于javascript - PeerJS 或 WebRTC 对等连接是否需要服务器或仅在客户端之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32147056/

相关文章:

javascript - 使用 Javascript 隐藏同名的 DIV

architecture - 网络到应用程序视频聊天的最佳技术?

ios - Navigator.mediaDevices.getUserMedia 不适用于 iOS 12 Safari

ios - 在 webrtc 回调 "- (void)peerConnectionOnRenegotiationNeeded:(RTCPeerConnection *)peerConnection"中应该做什么?

javascript - 如何使用 Jest 测试函数内部的类实例

python - Node.js 作为 Django 的自定义(流式)上传处理程序

c# - 文件上传html5 asp.net web方法

java - Java 中的多客户端聊天应用程序

ios - 由于未捕获的异常 'FirebaseShutdown' 而终止应用程序,原因 : 'Firebase error

javascript - 如何在 Firefox 中运行 webRTC 而不请求使用摄像头的权限