KKP2P系统架构说明
kkp2p整个系统架构如下图所示
云端总共有四个模块,作用分别如下:
p2p route:向外提供统一的登录域名和端口,并管理其他云端模块,以及管理在线设备的路由信息。
p2p relay: 当创建tcp类型传输通道而P2P直连失败时,通过该模块tcp中转进行通信。
turnserver:开源的stun/turn中转模块,当创建udp/webrtc类型传输通道而P2P直连失败时,通过该模块udp中转进行通信。
p2p track:保持和在线设备的tcp长连接,用于向通信双方提供建连信令服务。
peerA/peerB:通信双方客户端,当P2P连接失败时,需要通过p2p relay/ turnserver进行中转通信。
kkp2p sdk根据不同的通信场景,提供了三种不同的数据传输通道,说明如下:
1、KKP2P_TCP_CHANNEL:TCP通道类型,kkp2p会帮忙解决udp的丢包、乱序以及传输流控问题,适用于业务需要tcp通信场景。p2p直连失败通过p2p relay进行中转通信。
2、KKP2P_UDP_CHANNEL:UDP通道类型,kkp2p不帮忙解决udp的丢包、乱序以及流控,适用于业务需要udp通信场景。p2p直连失败通过turnserver进行中转。
3、KKP2P_WEBRTC_CHANNEL:支持浏览器和设备之间通过webrtc通信。适用于浏览器上观看设备端音视频场景。p2p直连失败通过turnserver进行中转。设备端的音视频采集编码、流控以及丢包重传等业务逻辑由应用层自行完成,kkp2p只是负责创建传输通道,不提供音视频业务相关的接口。