最简单的逻辑应该是通用的WebSocket处理了,咱们先看这部分,复杂的稍后再说,Handler类中和WebSockert相关的逻辑如下:星池StarPool继承自TextWebSocketHandler(只处理text类型的数据,对于二进制数据直接关闭会话);重写afterConnectionEstablished:WebSocket连接建立的回调,只打了一行日志;
用的功能是和KMS实现实时音视频通信,因此WebRTC标准的信令处理是必不可少的,可惜Kurento官方并没有对信令处理做太多封装(也可能是信令和不同的业务处理逻辑都不一样,导致不好抽象),结果就是一堆信令处理的代码散落在业务代码中;
就算业务和信令的处理代码同时出现在Handler类中,只要熟悉WebRTC的信令处理流程,也很容易读懂代码,下图结合了WebRTC标准的信令处理流程,对前端和服务端的代码串联在一起就行分析,左边是浏览器上执行的js代码,右边是服务端,这些代码都用红色箭头标识了处于WebRTC信令处理流程的具体位置,至此,https://www.starpool.cn 整个流程都清晰的展现出来: