哪位研究过GTalk的P2P部分?问下它里面的Relay流程是什么样子的?
如题,还有它的语音数据封装形式和端口分配处理
[解决办法]
看了一下,基本原理如TURN draft-ietf-behave-turn-09描述的那样。但有挺多不同和简化。当然了,这个东西私有的,不存在互通的问题。
基本流程差不多,client和relay server之间 allocate啊, response啊。。。。
但正如你看到的,一个明显不同,Gtalk的server transport address用端口5000,relayed transport address用端口5001. 所以Gtalk对所有allocation都分配的5001,并不像TURN协议所说的一个relayed transport address可以一一对应一个allocation。Gtalk用地址对和连接绑定来识别allocation。 当然了,有源代码,你也可以修改,因为RelayServer的写法是有一个sock address pool,可以从这个pool中选择/分配relayed transport address给某个client的allocation,只是这个pool陪Gtalk设置为只有一个sock address,使用端口5001.
还有,比如说Gtalk中的allocation不是通过Refresh消息来刷新,而是用数据包去刷新。也没有实现Allocation的一些高级属性,比如分配的一些选项。
。。。
-千里