0

我已经用于WebRTC我的聊天应用程序。我的想法是,只要有任何用户加入聊天应用程序,RTCPeerConnection就会创建一个新对象。聊天室将只允许one-to-one communication

示例:假设User1,User2User3加入了应用程序。如果user1想与之聊天,user2则将在这些用户之间创建一个房间。

这里user1RTCPeerConnection并且user2有它自己的RTCPeerConnection。接下来webRTC negotiation(交换要约、回答和 ICE)将通过信令在它们之间发生。数据可以通过 RTC 数据通道共享。

如果user1要连接user3,则user1必须离开之前的房间并与之进行 webRTC 协商user3(意味着之前的房间删除和新的房间必须创建)。

现在我的问题是

假设user1然后user2正在做 webRTC 通信

用户 1 RTCPeerConnection.signalingstatechange = have-local-offer

用户 2 RTCPeerConnection.signalingstatechange = have-remote-offer

之后我关闭了连接(意味着删除了房间)。接下来user1要连接user3

在这种情况下,我可以重新使用 User1RTCPeerConnection来创建新的报价user3吗?

如果是,在删除以前的连接期间我必须注意哪些事项?因为前一个signalingstatechangehave-local-offerand have-remote-offer。有什么帮助或建议吗?

4

1 回答 1

0

您不能像那样重复使用 PeerConnection。如果你想在三个用户之间创建一个网状连接,它看起来像。

user-1 <--> user-2
  ^              ^
  |              |
  ---> user-3 <-- 

每个用户将创建两个 PeerConnection 以与其他用户建立 P2P 连接。

于 2021-08-07T17:15:38.120 回答