WebRTC:TURN服务器与滚动您自己的通过通信的自定义服务器有何不同?

WebRTC:TURN服务器与滚动您自己的通过通信的自定义服务器有何不同?,webrtc,turn,Webrtc,Turn,在理解WebRTC时,我发现TURN服务器有一点很难理解。让我快速回顾一下我所理解的 信令服务器:是传递SDP数据包以协商WebRTC连接的自定义(非协议指定)实现。最有趣/最古怪的实现是将SDP数据包复制/粘贴为纯文本,如所述(旁注:谁说“实现”意味着您必须编程?:-D) STUN服务器:它告诉您可以访问的IP+端口。再见,纳特!哦,只有80%的案例 另外20%,我对TURN servers的理解是:两个(或更多)P2P连接方都可以访问的服务器,通过TURN服务器(使用Nat周围的中继进行遍历

在理解WebRTC时,我发现TURN服务器有一点很难理解。让我快速回顾一下我所理解的

信令服务器:是传递SDP数据包以协商WebRTC连接的自定义(非协议指定)实现。最有趣/最古怪的实现是将SDP数据包复制/粘贴为纯文本,如所述(旁注:谁说“实现”意味着您必须编程?:-D)

STUN服务器:它告诉您可以访问的IP+端口。再见,纳特!哦,只有80%的案例

另外20%,我对TURN servers的理解是:两个(或更多)P2P连接方都可以访问的服务器,通过TURN服务器(使用Nat周围的中继进行遍历)中继来自这些方的数据,并将其发送给另一方。如中所述

我的处境(以及由此产生的问题)

  • 我有一个信号服务器(耶!)
  • 我有一个眩晕服务器(万岁!)
  • 我有一个运行Socket.io的NodeJS服务器,用于在P2P通过信令和STUN服务器失败时运行。它只需获取传入的流量并将其广播给任何需要收听的人
  • 我知道我的服务器是一个定制的东西,可以实现与TURN服务器相同的功能

    我的问题:与TURN服务器相比,这种定制服务器有何不同


    注意:在我的例子中,它是NodeJS+Socket.io,但它可以是任何定制的服务器(为了好玩,我还创建了一个Ruby/Rails实现,其中WebSocket没有HTTP长轮询作为回退).

    可能是因为我们不希望在有一些好的免费实现(如和)的情况下从头开始构建中继服务器的开销。您需要花费大量时间来实现相同级别的性能和可扩展性


    此外,有了TURN服务器,您不需要单独的STUN服务器。

    可能是因为我们不想在有一些好的免费实现(如和)时从头开始构建中继服务器。您需要花费大量时间来实现相同级别的性能和可扩展性


    此外,有了TURN服务器,您不需要单独的STUN服务器。

    通常socket.io和Node仅用于发送信号(和发送自定义消息)。一个简单的CoTurn实例可以在5$vps上运行

    除了作为turn服务器使用外,它还提供了stun功能,但根据我的经验,也使用公共的google stun总是一个好主意(除了在中国,它是无法访问的)


    问题是:您是否检查了网络和系统负载以及您的实现,并将其与经典的TURN设置进行了比较

    通常socket.io和Node仅用于发送信号(和发送自定义消息)。一个简单的CoTurn实例可以在5$vps上运行

    除了作为turn服务器使用外,它还提供了stun功能,但根据我的经验,也使用公共的google stun总是一个好主意(除了在中国,它是无法访问的)


    问题是:您是否检查了网络和系统负载以及您的实现,并将其与经典的TURN设置进行了比较

    公平地说,当你前面已经有一个完美的轮子时,从头开始不是一件好事。公平地说,当你前面已经有一个完美的轮子时,从头开始不是一件好事。