an golang p2p connection application 因为现在在一家IPCAM公司就职,发现原来大部分公司都是用外面的方案公司提供的P2P库,鉴于研究精神,所以打算自己研究一下P2P 鉴于各种知识产权,前期先使用CC协议开源,后续项目稳定了再考虑Apache或者MIT协议 欢迎更多贡献者一起做这个项目
待办事项
- 创建项目
- 实现udp穿透
- udp穿透流程优化
- http请求接口 (查询设备是否在线等接口)
- 实现TCP穿透
- 多平台测试
- 结合stun服务优化
- 服务优化,适配更多的环境,更强的吞吐量
- 更多的硬件支持
————————————————————————云端————————————————————————
| |
| |
| |
| |
服务端(ipcamera,pc等) 客户端(app,pc客户端等)
云端提供2个功能,1个是桥接代理,就是转发服务端的数据到客户端,目前是做到一个服务里面, 以后可以考虑分离转发服务器,然后转发服务器做集群;再往后可以让客户端直接到RTMP流媒体服务器拉流, 然后等p2p打洞成功后自动切换到p2p并关闭RTMP。 1个是信令转发,通过stun服务获取各自的对外端口,然后通过此信令服务传输并打洞,此服务通过websocket技术实现。
- 查询设备在线状态
服务端默认通过ws到云端进行信令交换,信令交换方式都是可选择的,ws/udp
- ws方式支持http查询在线状态
- udp方式不支持http查询在线状态
- 后续还可以选择mqtt方式进行信令交换
客户端默认通过ws到云端进行信令交换,可选ws/udp
- udp方式存在可靠性问题
- ws不存在可靠性问题,并且ws一旦p2p建立成功后会自动断开