Leo*_*lli 5 javascript networking web-services network-programming webrtc
是否可以通过 WebRTC 数据通道实现 WebService?
这个想法是:
好处?:
缺点:
想法:
[编辑]
我发现这个仓库: https: //github.com/jsmouret/grpc-over-webrtc 太棒了!
[编辑2]
经过一番调查后,改变了 Orbit-db 的想法并删除了集群 IPFS
[编辑3]
在搜索 Fetch PROS for HTTP/2 后,我发现使用 ReadableStreams 获取上传流,我不知道通过 WebRTC DataChannel 或 HTTP/2 Stream 运行 GRPC (bidi) 有多大区别
非常酷的视频解释了该功能:https://www.youtube.com/watch?v =G9PpImUEeUA
这里有很多不同的观点,我们将尽力解决所有问题。
这个想法100%可行。查看 Pion WebRTC 的数据通道示例。建立连接只需要单个请求/响应。
如果您正在进行延迟敏感的工作,数据通道更适合。
通过数据通道,您可以测量背压。您可以知道已传送了多少数据,以及已排队了多少数据。如果队列已满,您就知道发送了太多数据。浏览器中的其他 API 不会提供此功能。有一些未来的 API (WebTransport),但目前还不可用。
数据通道允许无序/不可靠的传送。使用 TCP,您发送的所有内容都将按顺序传送,此问题称为队头阻塞。这意味着如果丢失一个数据包,所有后续数据包都必须延迟。一个例子是,如果您发送0 1 2 3
,如果数据包 1 尚未到达,则数据包 2 和数据包 3 尚无法处理。数据通道可以配置为在数据包到达时立即向您提供数据包。
我无法提供有关运行 DTLS+SCTP 与 TLS+WebSocket 服务器的 CPU/内存成本的具体数字。这取决于您拥有的硬件/网络、工作负载等......
您可以通过单个 WebRTC 连接 (PeerConnection) 提供多个 DataChannel 流。您还可以通过单个端口为多个 PeerConnection 提供服务。
WebRTC 可以通过 UDP 或 TCP 运行
这比较困难(但并不棘手),使用现有库在服务器之间移动 DTLS 和 SCTP 会话并不容易。使用pion/dtls,它支持导出/恢复会话。但是我不知道其他库的支持。
TLS/Websocket 更容易负载均衡。
WebRTC 具有强制加密功能。这对于 HTTP 1.1 来说很好,如果配置不正确,HTTP 1.1 可能会意外回退到非 TLS。
如果您想通过服务器路由消息(并且不让服务器看到它),我认为您使用什么协议并不重要。
WebRTC 可以在许多不同的拓扑中运行。您可以做 P2P 或客户端/服务器,以及介于两者之间的许多事情。根据您正在构建的内容,您可以构建混合网格。您可以创建连接图,并根据需要部署服务器。这种灵活性可以让您做一些有趣的事情。
希望能解决您的所有问题!很高兴在评论中进一步讨论/将继续编辑问题。
归档时间: |
|
查看次数: |
1292 次 |
最近记录: |