我正在尝试使用 flash 和 rtmfp 协议开发实时视频聊天应用程序,但我对 rtmfp 如何保证连接对等点存有疑问,尤其是当对等点位于不同的网络中时。
1 回答
RTMFP 依靠中央集合服务器来“引入”2 个位于不同网络中并且可能位于防火墙后面的客户端。为了通过防火墙导航,它使用NAT 穿越技术,基本上相当于:
- 2 个客户端(Joe 和 Mary)连接到中央集合服务器
- Adobe 的公共 RTMFP(非商业)集合服务器 rtmfp://p2p.rtmfp.net/
- 或者您可以使用 GPL 开源Cumulus或ArcusNode托管您自己的
- Joe 与 Mary 共享他的 peer ID,或者他们可以使用共享的NetGroup ID
- Mary 与中央会合服务器通信,然后使用各种 NAT 和防火墙穿越技术建立对等 2 对等 UDP 连接
无法保证任何 2 个客户端网络/防火墙与 RTMFP P2P 连接兼容(您可以使用RTMFP 连接测试仪进行诊断),这就是 Adobe 通过其LiveCycle Collaboration Service或Adobe Flash Media Server提供备用解决方案到中央中继服务的原因(如果无法建立直接 P2P 连接,基本上所有网络流量都将通过两个客户端都可以公开访问的服务器。
Adobe 的 RTMFP 是其对 Peer 2 Peer 网络会合服务的专有捆绑,并提供了一些其他更高级别的 P2P 网络网格功能。
如果您对更开放的标准 P2P 协议感兴趣,您应该研究WebRTC。本质上,WebRTC 与允许客户端通过 UDP 连接 P2P 的概念相同,但旨在被用作 Web 浏览器标准,并且还可以在其使用标准 NAT 的引擎盖下在各种本机设备(例如 Android、iPhone 等)上实现和使用STUN、ICE、TURN、RTP-over-TCP 的防火墙穿越技术和对代理的支持。我相信 WebRTC 是在libjingle P2P Google Talk 库中完成的一些工作的标准化。