最近项目上有个优化需求,要求把原来利用声网sdk实现的视频通信需求改成利用webrtc来实现,主要目的还是减少成本。
因为之前并没有接触过webrtc,所以还是有点儿虚。经过两个晚上的学习以及实操,总算是把webrtc的点对点通信技能掌握了。
核心点有下面几个
1. 掌握webrtc的通信流程
2. 信令服务器(websocket)的设计开发
3. turn/stun服务器(coturn)的使用
4. RtcPeerConnection的api使用
和http通信不同,webrtc最难得地方在于整个流程的异步通信处理
项目上线后也发现了很多的问题,主要是下面几个问题的处理
1. 因为关机或者网络等等原因,可能客户端中断连接,导致很难保证走正常关闭流程。这个时候服务端要做一些处理来保证这些异常流程
2. 服务端通关nginx来转发websocket请求,nginx默认如果60秒内没有通信会中断连接。所以需要有心跳机制来保证连接的可持续
3. 房间的关闭与连接的关闭一定要保证一致性。不能连接关闭了但是房间没有关闭,或者房间关闭了但是连接没有移除。