WebRTC:数据通道是否可以用于信令?

7

我正在开发一个使用WebRTC技术的项目,想知道是否可以使用数据通道来进行信令传递,类似于使用WebSockets。或者说,数据通道能否通过发送全局数据来替换peerconnection,因此我需要使用WebSockets来完成与服务器之间的信令传递部分?

3个回答

10

实际上,答案是肯定的。

让我解释一下:一旦PeerConnection已连接(通过任何方式-WebSockets、https等),那么您可以重新协商(新CreateOffer/CreateAnswer等)并将它们发送到DataChannel。这意味着在某些情况下,重新协商会更快,特别是对于两个端点都远离服务器或者两个端点在同一个局域网的情况。(也会减轻服务器负担,尽管这可能无关紧要,并且不依赖服务器维护通话状态。)

您还可以使用PeerConnection上的DataChannel连接到充当会议中心或信令服务器的服务器,用于重新协商(在会议中)和与连接到中心或服务器的其他人建立连接。

如果是“我想直接连接到某个随机的人而不经过服务器”,那么答案是否定的;您需要先建立连接的PeerConnection。如果您想交换offer和answer,您可以使用IPoAC。之后,根据以上内容,您可以使用DataChannels(速度可能会稍快)。


1
我很想看到ICE与IPoAC一起使用...但最好还是将其保留用于信令。 - jesup

0

我认为不行!!!

因为在第一次握手时,需要一个服务器进行信令。

而且我认为没有握手,我们将无法使用DataChannel共享文本或文件。

我用this JavaScript Only WebRTC Experiment做了同样的事情!--请参见源代码。 在那里,我使用PubNub进行信令和ICE交换。


Muaz是正确的。DataChannel是用于任意流数据通信的API;RTCPeerConnection用于音频和视频流。这两者需要通过交换媒体和网络信息来协调通信的信令,可以通过WebSocket等其他机制进行。 - Sam Dutton

0

正如jesup所提到的,答案是肯定的。

信令可以在任何传输上进行。我建议使用WebSockets,因为大多数浏览器都支持它

如果您不想费心设置自己的信令服务器,可以使用Pubnub或Pusher来为您处理。

如果您有兴趣了解更多信息,请参阅WebRTC信令教程。

http://pusher.com/tutorials/webrtc_chat

声明:本人就职于 Pusher 公司。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接