可以在WebService数据通道上实现WebRTC吗?
这样做的目的是:
福利?:
缺点:
想法:
编辑
我发现这个回购:https://github.com/jsmouret/grpc-over-webrtc太棒了!
EDIT2
经过研究,改变了轨道-db idea并删除了集群IPFS。
EDIT3
在搜索了HTTP/2的Fetch优点之后,我发现使用ReadableStreams进行获取上传流,我不知道在WebRTC DataChannel或HTTP/2流上运行GRPC (bidi)有多大的区别
非常酷的视频解释功能:https://www.youtube.com/watch?v=G9PpImUEeUA
发布于 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,以及许多介于两者之间的操作。根据您正在构建的内容,您可以构建一个混合网格。您可以创建一个连接图,并根据需要部署服务器。这种灵活性允许您做一些有趣的事情。

希望能解决你所有的问题!很乐意在评论中进一步讨论/将继续编辑这个问题。
发布于 2021-09-23 04:22:17
我还想知道几年前HTTP的想法。当前的问题是如何安全地从web应用程序连接到位于防火墙后面的IoT设备(raspberry pi)。
由于没有现成的解决方案,我最终建立了一个原型。该公司完成了这项工作,自2019年以来一直在现场部署。
请参阅此技术博客文章,其中详细介绍了设计和实现:https://webrtchacks.com/private-home-surveillance-with-the-webrtc-datachannel/
高级架构:

简化顺序图:

最近开始了将代码提取成独立回购的过程。
发布于 2021-04-23 05:53:54
如果您的主要用例交换了较小的内容,您可能会看到CoAP RFC 7252。虽然请求和响应的交换消息共享相同的fomat,但对等方可以轻松地实现客户端和服务器这两种角色。
对于DTLS1.2的一些高级用法,DTLS连接ID可以为您做一些神奇的事情。
如果您不坚持使用javascript,java是一个选项,您可以检查开源项目月食/加利福尼亚。这是一个CoAP/DTLS实现,它附带DTLS连接ID和一些准备好的高级示例,如内置负载平衡器或DTLS-优雅-重新启动。
https://stackoverflow.com/questions/66568033
复制相似问题