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

Does PeerJS or WebRTC peer connection require a server or it's only between clients?

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

同行需要某种方式来找到彼此并建立媒体连接。服务器是执行此操作的便捷方式。您可以设置直接连接以发送信号以交换 SDP 消息,但这是否有效取决于您是否知道端点和防火墙的地址是否正确配置。例如,手机和笔记本电脑的 IP 地址会经常变化,这使得直接定位它们变得困难。交换信息以启动对等连接的过程称为信令。

对等连接中的媒体通常在对等点之间发送,但您也可以通过 TURN 服务器发送媒体等操作。

与通过对等连接发送的媒体相比,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 连接。不过那是另外一个话题了。

希望这能消除您的困惑。