首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WebService数据通道上实现WebRTC是可能的,也是可行的吗?

在WebService数据通道上实现WebRTC是可能的,也是可行的吗?
EN

Stack Overflow用户
提问于 2021-03-10 15:37:38
回答 3查看 663关注 0票数 4

可以在WebService数据通道上实现WebRTC吗?

这样做的目的是:

  • 客户端向服务器发出一个https请求,用于信令和会话建立。
  • 客户机和服务器开始双向地通过WebRTC DataChannel进行通信。

福利?:

  • 表演?
  • 请求跨越一个连接,该标准允许在同一个连接(端口)上进行多个数据环。
  • 柔性网络拓扑
  • UDP
  • 端到端加密
  • 服务器可以通过同一连接发送事件。
  • 负载平衡可以在没有负载均衡器或各种不同解决方案的情况下从服务器客户端池中实现。
  • 目前正在讨论在工人/服务工作者/ etc中增加DataChannels的问题,https://github.com/w3c/webrtc-extensions/issues/64

缺点:

  • 用于实现请求碎片和缓冲区限制控制的特定应用程序代码
  • 编辑3--我不知道在性能和cpu/内存使用方面会有多大的差异,这会对HTTP/2流有多大影响?

想法:

  • 客户端可以读取用于同步的数据副本,也可以读取任何其他适合于公共IPFS网络中轨道数据库https://github.com/orbitdb/orbit-db的应用程序,使用轨道数据库的好处是只允许所有者进行写入,然后服务器还可以使用他的密钥对所有数据进行签名,这样客户端就可以验证和信任它来自服务器,该服务器可以卸载主服务器进行读取,这只是一个想法。

编辑

我发现这个回购:https://github.com/jsmouret/grpc-over-webrtc太棒了!

EDIT2

经过研究,改变了轨道-db idea并删除了集群IPFS。

EDIT3

在搜索了HTTP/2的Fetch优点之后,我发现使用ReadableStreams进行获取上传流,我不知道在WebRTC DataChannel或HTTP/2流上运行GRPC (bidi)有多大的区别

https://www.chromestatus.com/feature/5274139738767360#:~:text=Fetch%20upload%20streaming%20lets%20web,things%20involved%20with%20network%20requests)。

非常酷的视频解释功能:https://www.youtube.com/watch?v=G9PpImUEeUA

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-21 20:34:09

这里有很多不同的观点,将试图解决这些问题。

这个想法是100%可行的。查看Pion的数据通道示例。建立一个连接只需要一个请求/响应。

性能

如果您正在进行对延迟敏感的工作,则数据通道更适合。

有了数据通道,你可以测量背压。您可以知道已经传递了多少数据,已经排队了多少数据。如果队列已满,您就知道您发送的数据太多了。浏览器中的其他API不给您这个。有一些未来的API (WebTransport),但它们还没有可用。

数据通道允许无序/不可靠的传递。使用TCP,您发送的所有内容都将被传递,并且按照顺序,这个问题被称为行首阻塞。这意味着如果您丢失了一个数据包,那么后续的所有数据包都必须延迟。例如,如果您发送了0 1 2 3,如果数据包1还没有到达,那么2和3还不能被处理。数据通道可以配置为在数据包到达时立即给您。

我无法给出运行DTLS+SCTP与TLS+WebSocket服务器的CPU/内存成本的具体数字。这取决于您拥有的硬件/网络、工作负载等等。

多路复用

您可以在一个DataChannel连接( WebRTC Connection,PeerConnection)上服务多个WebRTC流。您还可以在一个端口上提供多个PeerConnections。

网络传输

WebRTC可以在UDP或TCP上运行。

负载平衡

对于现有的库来说,在服务器之间移动DTLS和SCTP会话很难(但不是很难)。使用π/dtls,它支持导出/恢复会话。不过,我不知道其他库中的支持。

TLS/Websocket更容易实现负载平衡。

端到端加密

WebRTC具有强制加密功能。这在HTTP1.1上很好,如果配置不正确,它可能会意外地回到非TLS。

如果您想通过服务器路由一条消息(而不是让服务器看到它),我不认为您使用的是什么协议。

拓扑

WebRTC可以在许多不同的拓扑中运行。您可以执行P2P或Client/Server,以及许多介于两者之间的操作。根据您正在构建的内容,您可以构建一个混合网格。您可以创建一个连接图,并根据需要部署服务器。这种灵活性允许您做一些有趣的事情。

希望能解决你所有的问题!很乐意在评论中进一步讨论/将继续编辑这个问题。

票数 6
EN

Stack Overflow用户

发布于 2021-09-23 04:22:17

我还想知道几年前HTTP的想法。当前的问题是如何安全地从web应用程序连接到位于防火墙后面的IoT设备(raspberry pi)。

由于没有现成的解决方案,我最终建立了一个原型。该公司完成了这项工作,自2019年以来一直在现场部署。

请参阅此技术博客文章,其中详细介绍了设计和实现:https://webrtchacks.com/private-home-surveillance-with-the-webrtc-datachannel/

高级架构:

简化顺序图:

最近开始了将代码提取成独立回购的过程。

https://github.com/ambianic/peerfetch

票数 2
EN

Stack Overflow用户

发布于 2021-04-23 05:53:54

如果您的主要用例交换了较小的内容,您可能会看到CoAP RFC 7252。虽然请求和响应的交换消息共享相同的fomat,但对等方可以轻松地实现客户端和服务器这两种角色。

对于DTLS1.2的一些高级用法,DTLS连接ID可以为您做一些神奇的事情。

如果您不坚持使用javascript,java是一个选项,您可以检查开源项目月食/加利福尼亚。这是一个CoAP/DTLS实现,它附带DTLS连接ID和一些准备好的高级示例,如内置负载平衡器DTLS-优雅-重新启动

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66568033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档