我使用WebRTC
作为我的聊天应用程序。我的想法是,每当任何用户加入聊天应用程序时,将创建一个新的RTCPeerConnection
对象。聊天室将只允许one-to-one communication
。
:假设User1
、User2
和User3
加入了应用程序。如果user1
想和user2
聊天,那么在这些用户之间将创建一个房间。
user1
有RTCPeerConnection
,user2
有自己的RTCPeerConnection
。接下来webRTC negotiation
(exchange offer, answer和ICE)将通过信令在它们之间发生。数据可通过RTC数据通道共享。
如果user1
想要与user3
连接,那么user1
必须离开之前的房间并与user3
进行webRTC协商(意味着删除之前的房间并创建新房间)。
我的问题是:
假设user1
和user2
正在进行webRTC通信,则
用户1RTCPeerConnection.signalingstatechange = have-local-offer
用户2RTCPeerConnection.signalingstatechange = have-remote-offer
之后,我已经关闭了连接(意味着房间被删除)。下一步user1
要连接user3
.
在这种情况下,我可以重用User1的RTCPeerConnection
来为user3
创建新的报价吗?
如果是,在删除以前的连接期间我必须注意的事情是什么?因为前面的signalingstatechange
是have-local-offer
和have-remote-offer
。有什么帮助或建议吗?
你不能像那样重用PeerConnection。如果你想在三个用户之间创建一个网格连接,它将看起来像。
user-1 <--> user-2
^ ^
| |
---> user-3 <--
每个用户将创建两个PeerConnections与其他用户建立P2P连接。