有没有可能在WebRTC数据通道上实现WebService?
想法是:
- 客户端向服务器发出一个https请求,以进行信令和会话建立
- 客户端和服务器通过WebRTC数据通道双向通信
好处?:
- 性能?
- 请求通过一个连接进行,标准允许在同一连接(端口)上使用多个数据通道
- 灵活的网络拓扑
- UDP
- 端到端加密
- 服务器可以通过同一连接发送事件
- 负载均衡可以从客户端池中实现,无需负载均衡器或各种不同的解决方案
- 目前正在讨论将DataChannels添加到Workers / Service Workers /等中https://github.com/w3c/webrtc-extensions/issues/64
缺点:
- 应用特定代码,用于实现请求分段并控制缓冲区限制
- [编辑3] 我不知道与HTTP / 2流相比,在性能和CPU /内存使用方面会有多大的差异
想法:
- 客户端可以是数据的读取副本以进行同步,或者适用于在公共IPFS网络中使用orbit-dbhttps://github.com/orbitdb/orbit-db的任何其他应用程序,使用orbit-db的好处是仅允许所有者进行写入,然后服务器可以使用他的密钥额外签署所有数据,以便客户端可以验证和信任来自服务器的数据,这可以卸载主服务器以进行读取,这只是一个想法。
[编辑]
我找到了这个repo:https://github.com/jsmouret/grpc-over-webrtc 太棒了!
[EDIT2]
更改了Orbit-db的想法并删除了集群IPFS,经过一番调查
[EDIT3]
在搜索Fetch PROS的HTTP/2后,我发现使用ReadableStreams进行Fetch上传流,但我不知道在WebRTC DataChannel或HTTP/2 Stream上运行GRPC(bidi)会有多大的差异
Fetch上传流让Web更快,减少了网络请求涉及的复杂操作。。
非常酷的视频介绍了这个功能:https://www.youtube.com/watch?v=G9PpImUEeUA