我已经开始研究WebRTC了,我正在使用它来使用数据通道构建一个简单的对等聊天应用程序 . 我有以下问题:
-
我是否需要为每个想要与之对话的对等方 Build RTCPeerConnection?因此,如果有三个对等体,则它们每个都需要2个RTCPeerConnections(除非我使用其中一个对等体作为一种ad-hoc服务器) .
-
如果对等体A在向对等体B创建提议时发出候选者和sdp . 对等体B可以使用该信息连接到对等体A并通过RTCPeerConnection发送其应答(使用候选者及其sdp),即使用RTCPeerConnection(在它之前)已完全 Build )作为信号通道?我假设当提议由对等方A创建时,它开始侦听某个端口上的连接 .
我对WebRTC的理解有点受限,所以如果我在上面的问题中误解了WebRTC的一些概念,请指出它们!
1 回答
是的,作为一种直接的P2P协议,如果他们想要沟通,每个人都必须直接与其他人联系;除非您创建某种网状网络,其中一个对等体将消息转发给其他对等体 .
不,SDP提供和回答以及ICE候选人都需要通过信令服务器进行交换;在两个对等方实际上已就特定会话配置和ICE路由达成一致之前,无法 Build 连接,因此您无法通过尚未完成的连接发送SDP应答 .
特别是对于简单的纯文本聊天,通过服务器通常比使用P2P更容易;处理和带宽要求非常小,以至于P2P连接的复杂性可能不值得 . 无论如何你需要一个信令服务器 . 一旦你开始发送大文件或音频/视频流,P2P才会变得非常有趣 .