我正在使用 Web 套接字服务器(节点 JS)作为信号服务器。我想创建一个 P2P 网状网络 -每个人都相互连接。
在以下情况下,操作/事件的顺序是什么:
- 第一个对等方加入
- 随后的对等方加入
是否每个连接的对等点都向信令服务器发送要约,然后再发送给所有其他连接的对等点?我不确定这是否是正确的方法。
我正在使用 Web 套接字服务器(节点 JS)作为信号服务器。我想创建一个 P2P 网状网络 -每个人都相互连接。
在以下情况下,操作/事件的顺序是什么:
是否每个连接的对等点都向信令服务器发送要约,然后再发送给所有其他连接的对等点?我不确定这是否是正确的方法。
如果您要做的是创建一个网状网络,音频和视频始终通过网状网络流向每个人,那么我建议重新考虑。让超过 3 或 4 个用户正常工作很难甚至不可能实现。有关不同网络拓扑的网络内容的说明,请参见此处:http: //testrtc.com/different-multiparty-video-conferencing/
如果您尝试这样做以连接数据(非语音或视频),那么您可以这样做,但同样,您可以在单个浏览器中放置的对等连接的数量是有限的,并且您添加的每个连接都会产生一些开销。今天,我最多不会尝试超过 40 或 50。
根据您的问题,我假设所有客户端都将通过 WebSocket 连接到您的服务器。当您想将特定用户连接到另一个用户(或一小组用户)时,您可能最终会通过服务器路由消息并明智地创建对等连接。
对于小组场景,我会使用SFU模型 - 查看 Jitsi ( https://jitsi.org/Projects/JitsiVideobridge ) 和 Kurento ( http://www.kurento.org/ ) 寻找可能的替代方案。
WebRTC 将客户端连接到客户端。如果您的客户至少连接到另一个 - 另一个可以有一个其他人的列表,因为其他人也有一个他们可能知道的尽可能多的其他人的列表。然后它传播得很快。列表中的拓扑由您决定。不需要信令,因为与他人联系的信息在列表中。