我正在尝试在TCP之间使用WebRTC媒体,但是我在ICE连接阶段遇到了一些有趣的问题 . 在进一步发展之前,重要的是要知道我有相同的UDP设置,一切正常 .
在网关中,我们修改远程应答SDP以包括单个TCP候选(媒体端口也被修改为包括相同的端口):
a=candidate:1 1 tcp 1 <gw_ip> <gw_port> typ host tcptype passive generation 0
我也将属性设置发送为被动:
a=setup:passive
在Chrome上应用远程描述后几秒钟,我在网关上收到一个STUN BIND请求,我正在回复绑定成功响应(我已经检查了交易ID和消息完整性,看起来很好) .
在此简单的chrome之后不会继续ICE检查(两者都不是DTLS消息) . 我已经启用了chrome日志,看看是否发生了一些错误,我发现了一个有趣的输出:
“忽略共享套接字上的STUN绑定响应消息”
我看了一下chrome源代码,看起来这是因为chrome正在使用共享套接字,但我无法理解它的原因 .
有任何想法吗?谢谢!
1 回答
经过深入调查后,我发现TCP流未在网关端正确解析 .
特定于此流,使用未应用于入站/出站数据的长度框架机制,因此在流程管道上引发了若干问题 .
有关框架机制的更多信息,请参阅rfc5389:https://tools.ietf.org/html/rfc5389