rawrtc, WebRTC和 ORTC,有点 RAWR !

分享于 

15分钟阅读

GitHub

  繁體 雙語
WebRTC and ORTC with a little bit of RAWR!
  • 源代码名称:rawrtc
  • 源代码网址:http://www.github.com/rawrtc/rawrtc
  • rawrtc源代码文档
  • rawrtc源代码下载
  • Git URL:
    git://www.github.com/rawrtc/rawrtc.git
    Git Clone代码到本地:
    git clone http://www.github.com/rawrtc/rawrtc
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/rawrtc/rawrtc
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    RAWRTC

    Build Status

    一个WebRTC和ORTC库,它有一个小。

    特性

    下面的列表表示为RAWRTC计划的所有功能。 具有选中标记的功能已经实现。

    先决条件

    需要以下软件包:

    • git
    • cmake> = 3.2
    • fram配置( 用于更新的FreeBSD版本的pkgconf )
    • SSL开发库( libssl-dev 上的,OSX上的openssl
    • GNU Make ( 针对 rerew 依赖性的FreeBSD上的gmake )

    插件生成

    下面的指令将使用自定义的前缀来避免安装必要的依赖项和这个库系统。

    依赖项

    
    cd <path-to-rawrtc>
    
    
    ./make-dependencies.sh
    
    
    
    

    包配置路径

    要找到以前生成的依赖项,必须使用以下环境变量来查找Meson和 CMake:

    
    export PKG_CONFIG_PATH=${PWD}/build/prefix/lib/pkgconfig
    
    
    
    

    请注意,关闭终端后,这里命令将需要重复。

    编译

    控件
    
    cd <path-to-rawrtc>/build
    
    
    cmake -DCMAKE_INSTALL_PREFIX=${PWD}/prefix.. 
    
    
    make install
    
    
    
    
    介子
    
    Will be added later. Use Cmake for now.
    
    
    
    

    运行

    RAWRTC提供了许多工具,可以用于快速测试目的和开始。 让我们逐一逐一浏览一遍。 if check check data and and skip skip使用 WebRTC API或者使用 ORTC API的data-channel-sctp 工具部分

    因为我们使用了定制的前缀,所以需要将前缀添加到路径中以运行各种二进制文件。 要在运行二进制文件时找到共享库,还必须设置库路径。 注:我们假定你位于 build 目录中。

    
    export LD_LIBRARY_PATH=${PWD}/prefix/lib:${LD_LIBRARY_PATH}
    
    
    export PATH=${PWD}/prefix/bin:${PATH}
    
    
    
    

    大多数工具都有必要或者可选的参数,这些参数在工具之间共享。 下面是各种参数的说明:

    提供

    对等方是否要创建提供程序。 提供 1 立即或者 0 创建报价,以便在远程报价处理后创建一个答案。

    仅由 WebRTC API工具使用。

    ice角色

    确定冰传输所使用的冰作用,其中 0 表示控制控制控制控制。

    仅由 ORTC API工具使用。

    重定向 ip

    SCTP堆栈侦听的IP地址。

    redirect-port 一起使用。 仅由SCTP重定向传输使用。

    重定向端口

    SCTP堆栈侦听的端口号。

    redirect-ip 一起使用。 仅由SCTP重定向传输使用。

    端口

    内部SCTP堆栈应该使用的端口号。 默认为 5000

    注意:除非你想调试SCTP消息,否则你选择哪个端口并不重要。 这种情况下,通过端口号区分对等点比较容易。

    仅由 ORTC API工具使用。

    maximum-message-size

    SCTP消息能够处理外部SCTP堆栈的最大消息大小。 0 表示可以处理任意大小的消息。 默认为 0

    仅由SCTP重定向传输使用。

    ice-candidate-type

    如果提供,将启用一个或者多个特定ICE候选类型,并且所有其他ICE候选类型将被禁用。 可以是以下字符串之一:

    • 主机
    • srflx
    • prflx
    • 继电器

    请注意,这对收集策略没有影响。 候选人将被收集,但他们将被工具忽略。

    如果未提供,则启用所有ICE候选类型。

    ice

    API: ORTC

    收集者工具收集和打印冰候选人。 收集完成后,工具退出。

    使用方法:

     
    ice-gatherer
    
    
    
     

    ice-transport-loopback

    API: ORTC

    冰传输回送工具启动两个冰传输实例,建立冰连接。 一旦你为客户机 B B 和B 看到以下行,ICE连接就已经建立:

    
    (<client>) ICE transport state: connected
    
    
    
    

    使用方法:

    
    ice-transport-loopback [<ice-candidate-type>.. .]
    
    
    
    

    dtls-transport-loopback

    API: ORTC

    在DTLS传输回送工具启动两个DTLS传输实例,这些实例在已经建立的ICE传输连接上工作。 建立DTLS连接后,它使用内部接口将DTLS传输上的原始数据发送到另一个节点。 目前没有办法验证数据是否已经收到,但是你可以使用Wireshark跟踪这些数据包。

    要验证DTLS连接是否建立,请等待这两个客户端的以下行:和 B:

    
    (<client>) DTLS transport state change: connected
    
    
    
    

    使用方法:

    
    dtls-transport-loopback [<ice-candidate-type>.. .]
    
    
    
    

    sctp-transport-loopback

    API: ORTC

    在DTLS传输连接的基础上,SCTP传输回送工具启动两个SCTP传输实例。 一旦SCTP连接建立,它就使用一个内部接口将SCTP传输上的原始数据发送给它的他对等方。

    要验证SCTP连接是否建立,请等待这两个客户端的以下行:和 B

    
    (<client>) SCTP transport state change: connected
    
    
    
    

    如果数据已经成功传输,该工具将输出警告( 四次):

    
    Ignored incoming DCEP control message with unknown type: 72
    
    
    
    

    这里警告完全有效,因为这里工具为测试目的发送无效的DCEP消息。

    使用方法:

    
    sctp-transport-loopback [<ice-candidate-type>.. .]
    
    
    
    

    sctp-redirect-transport

    API: ORTC

    在建立的DTLS传输之上,SCTP重定向传输工具启动一个SCTP重定向传输,以中继来自第三方的SCTP消息。 这个工具已经开发成能够测试数据通道实现,而不必编写所需的DTLS和ICE栈。 这种测试工具的一个例子是 dctt,它使用了内核的内核SCTP栈。

    建筑物:

    这里工具不是默认生成的。 要构建它,在构建时将环境变量 SCTP_REDIRECT_TRANSPORT 设置为 ON:

    
    cd <path-to-rawrtc>/build
    
    
    cmake -DCMAKE_INSTALL_PREFIX=${PWD}/prefix -DSCTP_REDIRECT_TRANSPORT=ON.. 
    
    
    make install
    
    
    
    

    注意,这个工具不会在没有SSE支持的系统上构建,如 ARM。

    使用方法:

    
    sctp-redirect-transport <0|1 (ice-role)> <redirect-ip> <redirect-port>
    
    
     [<sctp-port>] [<maximum-message-size>]
    
    
     [<ice-candidate-type>.. .]
    
    
    
    

    data-channel-sctp-loopback

    API: ORTC

    在抽象SCTP数据传输的基础上,数据通道SCTP环回工具创建了几个数据通道。 打开数据通道后,将向其他对等方发送一条消息。 此外,在短暂超时之后,将在特定信道上发送另一条消息。

    要验证数据通道是否打开,请等待以下行:

    
    (<client>) Data channel open: <channel-label>
    
    
    
    

    工具将根据ICE角色向其他节点发送一些大型( 16 MiB ) 测试数据。 因为RAWRTC处理数据通道消息,而且与大多数其他实现相比,它没有最大消息大小限制,所以我们能够做到这一点。

    使用方法:

    
    data-channel-sctp-loopback [<ice-candidate-type>.. .]
    
    
    
    

    data-channel-sctp

    API: ORTC

    data工具在抽象的SCTP数据传输之上创建了几个数据通道:

    • 带有标签 cat-noises 和 id 0的预先协商的数据通道,它是可靠和有序的。 在WebRTC中,将通过调用以下方法创建通道:

      peerConnection.createDataChannel('cat-noises', {
       ordered:true,
       id:0});
    • 带有可靠但无序的标签 bear-noises的数据通道。 在WebRTC中,将通过调用以下方法创建通道:

      peerConnection.createDataChannel('bear-noises', {
       ordered:true,
       maxRetransmits:0});

    要与另一个对等方建立连接,必须遵循以下 procecure:

    Local Parameters: 之后的JSON blob必须粘贴到你希望与之建立连接的其他对等方。 这可以是使用 webrtc ortc浏览器示例工具的浏览器实例,也可以是这里工具的另一实例。

    必须将 JSON blob形式的其他peer参数粘贴到这里工具实例中。

    一旦将本地参数粘贴到其他实例中,就可以通过按下来建立对等连接,在两个实例中输入。

    工具将根据ICE角色向其他节点发送一些测试数据。 然而,浏览器工具的行为有点不同。 检查工具实例( 浏览器中的控制台输出)的日志输出,查看已经发送哪些数据以及是否已经成功接收到数据。

    在浏览器中,你可以通过访问 peer.dc['<channel-name>'] 来使用创建的数据通道,例如:

    peer.dc['example-channel'].send('RAWR!')

    使用方法:

    
    data-channel-sctp <0|1 (ice-role)> [<sctp-port>] [<ice-candidate-type>.. .]
    
    
    
    

    data-channel-sctp-echo

    API: ORTC

    数据通道SCTP回送工具的行为与其他任何回显服务器一样: 它将任何数据通道上的接收数据回发到发送方。

    必要的对等连接建立步骤与描述 data-channel-sctp工具的步骤相同。

    使用方法:

    
    data-channel-sctp-echo <0|1 (ice-role)> [<sctp-port>] [<ice-candidate-type>.. .]
    
    
    
    

    对等连接

    API: WebRTC

    对等连接工具创建对等连接实例和多个数据通道:

    • 带有标签 cat-noises 和 id 0的预先协商的数据通道,它是可靠和有序的。 JS API中的通道将通过调用以下内容来创建:

      peerConnection.createDataChannel('cat-noises', {
       ordered:true,
       id:0});
    • 带有可靠但无序的标签 bear-noises的数据通道。 在WebRTC中,将通过调用以下方法创建通道:

      peerConnection.createDataChannel('bear-noises', {
       ordered:true,
       maxRetransmits:0});

    要与另一个对等方建立连接,必须遵循以下 procecure:

    在你需要建立连接时,生成的JSON blob必须被粘贴到另一个你要建立连接的对等方,而这一点是提供的。 这可以是使用 WebRTC浏览器示例工具的浏览器实例,也可以是这里工具的另一实例。 如果是浏览器实例,按开始按钮并将数据直接粘贴到 Paste remote description: 下面的文本区域。 如果是这里工具的另一个实例,请将数据粘贴到其他控制台的其他控制台中,然后按下。

    接受应答角色的peer现在也生成一个 JSON blob,其中包含答案 SDP。 必须将它的粘贴到其他浏览器实例或者工具实例中,如前一步所述。

    一旦 ,就应该自动建立对等连接,并提供和答案。

    根据是否接受该工具,该工具将向另一个同级发送一些测试数据,这取决于它是否具有特定的功能。 然而,浏览器工具的行为有点不同。 检查工具实例(。在浏览器中,打开控制台日志,或者查看右侧的实时日志)的日志输出,查看已经发送哪些数据以及是否已经成功接收到数据。

    在浏览器中,你可以通过访问控制台日志中的pc.dcs['<channel-name>'] 来使用创建的数据通道,例如:

    pc.dcs['cat-noises'].send('RAWR!')

    使用方法:

    
    peer-connection <0|1 (offering)> [<ice-candidate-type>.. .]
    
    
    
    

    WEB  BIT  Webrtc  ortc  
    相关文章