【问题标题】:{Background} Why is WebRTC always using websockets for signaling?{Background} 为什么 WebRTC 总是使用 websockets 来发送信号?
【发布时间】:2019-10-29 15:44:09
【问题描述】:

我一直在研究一堆 WebRTC 示例,它们都需要自定义 Websocket 服务器来交换信令数据。 OTOH,每个 WebRTC 文档都声明您可以使用 anything 来发送信号,包括航母 pidgeons。

所以我一直在想,只是出于好奇:为什么信号通常不使用无聊的旧 REST API(或类似的)来完成?设置过程似乎没有实时要求,为此使用 Websockets 是有意义的......

【问题讨论】:

标签: rest websocket webrtc


【解决方案1】:

因为您希望设置过程尽可能快——通常情况下——并且可能有很多消息要交换,尤其是在您使用 ICE 滴流的情况下。使用 AJAX 您必须使用重复轮询,这肯定会更慢。如果这对您来说足够好,并且您看到这样做与网络套接字相比有一些优势,那么您将获得更多权力。但通常,您希望在收到消息后立即将消息转发给其他对等方,而不是每当其他对等方碰巧下一次轮询服务器时。而将数据从服务器推送到客户端的唯一实用选项是 Web 套接字。

可以使用 server-sent events 进行服务器到客户端的推送,使用 AJAX 进行客户端到服务器的发送……但是为什么,当 Web 套接字已经提供双工通信时?

【讨论】:

  • 你可以做长轮询......它还有一些其他问题,但它至少可以解决速度问题。
  • 当然,您可以……但正如您所说,这还有其他一些问题。 Web 套接字通常是最简单的选择。基本上,您为什么不使用信鸽,即使您可以...?好吧,因为它很傻。
  • 我同意 - 但这不是问题。
  • 那么问题是什么?是的,您可以使用信鸽、长轮询或 REST……但您通常不会,因为 [查看我的回答]。
  • 谢谢!现在我想了更多,我想推送功能是最关键的方面,因为例如ICE 重新谈判,对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 2012-09-01
  • 2017-04-07
  • 1970-01-01
  • 2014-03-21
  • 2017-03-07
相关资源
最近更新 更多