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

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

本文关键字:服务器 客户端 之间 WebRTC 对等 连接 是否 PeerJS      更新时间:2023-09-26

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

我认为WebRTC对等连接的全部意义在于允许直接用户到用户的连接。

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

互联网上的两个设备不可能知道彼此的地址,除非它们以某种方式交换这些信息。这就是为什么要使用SIP、XMPP等信令服务器的原因。对等体登录到这些服务器以交换这些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连接也不总是可能的。有一些nat使得无法创建P2P连接。但那是另一个话题了。

对等体需要某种方式找到彼此并建立媒体连接。服务器是一种方便的方法。您可以为交换SDP消息的信令设置直接连接,但这是否有效取决于您是否知道端点的地址和防火墙是否正确配置。例如,移动电话和笔记本电脑的IP地址将频繁变化,这使得直接定位它们变得困难。交换信息以启动对等连接的过程称为信令。

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

与通过对等连接发送的媒体相比,WebRTC过程的信令部分非常轻量级。由于使用服务器进行信令的简单性,因此经常使用服务器进行信令。