Open santiagochen opened 2 months ago
同样出现这个问题
我也碰到一样的情况。原因是用了uu加速盒之后就会这样,如果手机与xbox在同一个ssid下面没有问题,如果不在同一个ssid下面就卡在Ice交换成功,正在建立连接……;但是同样的情况下用xbox官方app是可以正常串流的。请大佬看看能不能解决这个问题。
这个问题我来解释一下,先说结论:目前这个问题暂时不能彻底解决。
以下解释只适用主机可以正常远程串流的场景,网络环境没设置好的情况不在解释范围内。
在出现Ice交换成功,正在建立连接
的时候,客户端已经找到了主机IP,正在进行P2P直连的最后阶段,输入通道正在等待主机端的connected
响应,详细代码实现查看此处,也就是客户端一直接收不到主机的connected
信号,导致串流连接直接卡住了,目前这个问题基本出现在远程串流Xbox主机会出现这个问题。
个人猜测这个问题出现的原因大概率是因为Xbox主机使用的WebRTC协议不是标准协议,导致有时候会出现WebRTC连接没有响应的情况,而官方xbox应用可以在多数情况下成功连接也正是有这个特殊的协议实现,而这个特殊的协议实现目前还未知,因此不能彻底解决。这个推测的依据有以下两点:
也遇到这种情况。9002、3074端口是打开的,且xbox官方app是可以串流成功的。但xstreaming串流就会出现ICE连接的问题。异地时只有vpn回家,在同一局域网下,才能串流成功。
这个问题我来解释一下,先说结论:目前这个问题暂时不能彻底解决。
以下解释只适用主机可以正常远程串流的场景,网络环境没设置好的情况不在解释范围内。
卡在正在连接的原因
在出现
Ice交换成功,正在建立连接
的时候,客户端已经找到了主机IP,正在进行P2P直连的最后阶段,输入通道正在等待主机端的connected
响应,详细代码实现查看此处,也就是客户端一直接收不到主机的connected
信号,导致串流连接直接卡住了,目前这个问题基本出现在远程串流Xbox主机会出现这个问题。个人猜测
个人猜测这个问题出现的原因大概率是因为Xbox主机使用的WebRTC协议不是标准协议,导致有时候会出现WebRTC连接没有响应的情况,而官方xbox应用可以在多数情况下成功连接也正是有这个特殊的协议实现,而这个特殊的协议实现目前还未知,因此不能彻底解决。这个推测的依据有以下两点:
- 串流云游戏跟串流主机使用的是相同的逻辑,云游戏没有出现过卡在正在连接的情况。
- 我尝试过使用安卓原生的webrtc连接xbox主机,会出现已经连接,且出现了串流画面,但过一分钟会被主机端踢下线(错误关键字:kick for no client connection),使用同样的实现在云游戏没有问题,至今还没有解决这个问题,感兴趣可以参考webrtc分支的实验性代码。
尝试解决
- 在v1.0.0加入了微软的STUN服务器做为首选。
- 以往的版本会缓存用户的token以减少每次登录的时长(缓存时间一小时),这也会导致相同的token在发起串流回话时会有相同的sessionID,也就是这个sessionID一旦卡住,无论后续试多少次,主机端都视为一个会话,从而导致一直无法连接。v1.0.0加入了连接失败提示,出现这个提示点击弹窗的刷新按钮可以彻底清空缓存,从而在下次发起串流会话时用新的sessionId访问主机,个人亲测出现连接卡住后重试几次可以正常连接,如果实在无法连接,那么尝试先使用官方xbox应用远程连接一次,再使用XStreaming进行连接,成功率可以大大提高。
xbox的webrtc当然是符合webrtc标准协议,主要是2个方面。
这个问题我来解释一下,先说结论:目前这个问题暂时不能彻底解决。
以下解释只适用主机可以正常远程串流的场景,网络环境没设置好的情况不在解释范围内。
卡在正在连接的原因
在出现
Ice交换成功,正在建立连接
的时候,客户端已经找到了主机IP,正在进行P2P直连的最后阶段,输入通道正在等待主机端的connected
响应,详细代码实现查看此处,也就是客户端一直接收不到主机的connected
信号,导致串流连接直接卡住了,目前这个问题基本出现在远程串流Xbox主机会出现这个问题。个人猜测
个人猜测这个问题出现的原因大概率是因为Xbox主机使用的WebRTC协议不是标准协议,导致有时候会出现WebRTC连接没有响应的情况,而官方xbox应用可以在多数情况下成功连接也正是有这个特殊的协议实现,而这个特殊的协议实现目前还未知,因此不能彻底解决。这个推测的依据有以下两点:
- 串流云游戏跟串流主机使用的是相同的逻辑,云游戏没有出现过卡在正在连接的情况。
- 我尝试过使用安卓原生的webrtc连接xbox主机,会出现已经连接,且出现了串流画面,但过一分钟会被主机端踢下线(错误关键字:kick for no client connection),使用同样的实现在云游戏没有问题,至今还没有解决这个问题,感兴趣可以参考webrtc分支的实验性代码。
尝试解决
- 在v1.0.0加入了微软的STUN服务器做为首选。
- 以往的版本会缓存用户的token以减少每次登录的时长(缓存时间一小时),这也会导致相同的token在发起串流回话时会有相同的sessionID,也就是这个sessionID一旦卡住,无论后续试多少次,主机端都视为一个会话,从而导致一直无法连接。v1.0.0加入了连接失败提示,出现这个提示点击弹窗的刷新按钮可以彻底清空缓存,从而在下次发起串流会话时用新的sessionId访问主机,个人亲测出现连接卡住后重试几次可以正常连接,如果实在无法连接,那么尝试先使用官方xbox应用远程连接一次,再使用XStreaming进行连接,成功率可以大大提高。
xbox的webrtc当然是符合webrtc标准协议,主要是2个方面。
- 候选地址是否过滤了ipv6。内网也不存在连不上的问题只要是做了正确的stun
- 连接上后需要不停的发送心跳包,否则会被踢下线。 greenlight的代码里有具体实现
事实上greenlight的代码实现我已经看过好多遍了,你说的这些都有代码做处理。而且greenlight也一样存在卡在接收connected事件的问题,相关issues: https://github.com/unknownskl/greenlight/issues/896 https://github.com/unknownskl/greenlight/issues/498
包括xbxplay串流主机有时候也会出现连接不上的问题,虽然xbxplay没有显示具体错误,但基本情况也类似,目前就是不知道官方xbox应用使用了什么黑科技可以保证连接稳定性。
这个问题我来解释一下,先说结论:目前这个问题暂时不能彻底解决。
以下解释只适用主机可以正常远程串流的场景,网络环境没设置好的情况不在解释范围内。
卡在正在连接的原因
在出现
Ice交换成功,正在建立连接
的时候,客户端已经找到了主机IP,正在进行P2P直连的最后阶段,输入通道正在等待主机端的connected
响应,详细代码实现查看此处,也就是客户端一直接收不到主机的connected
信号,导致串流连接直接卡住了,目前这个问题基本出现在远程串流Xbox主机会出现这个问题。个人猜测
个人猜测这个问题出现的原因大概率是因为Xbox主机使用的WebRTC协议不是标准协议,导致有时候会出现WebRTC连接没有响应的情况,而官方xbox应用可以在多数情况下成功连接也正是有这个特殊的协议实现,而这个特殊的协议实现目前还未知,因此不能彻底解决。这个推测的依据有以下两点:
- 串流云游戏跟串流主机使用的是相同的逻辑,云游戏没有出现过卡在正在连接的情况。
- 我尝试过使用安卓原生的webrtc连接xbox主机,会出现已经连接,且出现了串流画面,但过一分钟会被主机端踢下线(错误关键字:kick for no client connection),使用同样的实现在云游戏没有问题,至今还没有解决这个问题,感兴趣可以参考webrtc分支的实验性代码。
尝试解决
- 在v1.0.0加入了微软的STUN服务器做为首选。
- 以往的版本会缓存用户的token以减少每次登录的时长(缓存时间一小时),这也会导致相同的token在发起串流回话时会有相同的sessionID,也就是这个sessionID一旦卡住,无论后续试多少次,主机端都视为一个会话,从而导致一直无法连接。v1.0.0加入了连接失败提示,出现这个提示点击弹窗的刷新按钮可以彻底清空缓存,从而在下次发起串流会话时用新的sessionId访问主机,个人亲测出现连接卡住后重试几次可以正常连接,如果实在无法连接,那么尝试先使用官方xbox应用远程连接一次,再使用XStreaming进行连接,成功率可以大大提高。
xbox的webrtc当然是符合webrtc标准协议,主要是2个方面。
- 候选地址是否过滤了ipv6。内网也不存在连不上的问题只要是做了正确的stun
- 连接上后需要不停的发送心跳包,否则会被踢下线。 greenlight的代码里有具体实现
事实上greenlight的代码实现我已经看过好多遍了,你说的这些都有代码做处理。而且greenlight也一样存在卡在接收connected事件的问题,相关issues: unknownskl/greenlight#896 unknownskl/greenlight#498
包括xbxplay串流主机有时候也会出现连接不上的问题,虽然xbxplay没有显示具体错误,但基本情况也类似,目前就是不知道官方xbox应用使用了什么黑科技可以保证连接稳定性。
你这个推断有点偏了。
@FanLemon 谢谢,你倒给了我一些启发,改天我把ice候选项在远程的情况过滤掉一些内网地址试试
也遇到这种情况。9002、3074端口是会打开的,且xbox官方app是可以串流成功的。但是xstreaming串流出现ICE连接的问题。异地时只有vpn回家,在同一局域网下,才能串流成功。
此前路由器防火墙内专门屏蔽了xbox的ipv6地址分配,现在把屏蔽取消掉,xbox获取ipv6地址后。手机用数据网络链接成功。看来问题是出现在xbox的ipv6上???
这个问题我来解释一下,先说结论:目前这个问题暂时不能彻底解决。
以下解释只适用主机可以正常远程串流的场景,网络环境没设置好的情况不在解释范围内。
卡在正在连接的原因
在出现
Ice交换成功,正在建立连接
的时候,客户端已经找到了主机IP,正在进行P2P直连的最后阶段,输入通道正在等待主机端的connected
响应,详细代码实现查看此处,也就是客户端一直接收不到主机的connected
信号,导致串流连接直接卡住了,目前这个问题基本出现在远程串流Xbox主机会出现这个问题。个人猜测
个人猜测这个问题出现的原因大概率是因为Xbox主机使用的WebRTC协议不是标准协议,导致有时候会出现WebRTC连接没有响应的情况,而官方xbox应用可以在多数情况下成功连接也正是有这个特殊的协议实现,而这个特殊的协议实现目前还未知,因此不能彻底解决。这个推测的依据有以下两点:
- 串流云游戏跟串流主机使用的是相同的逻辑,云游戏没有出现过卡在正在连接的情况。
- 我尝试过使用安卓原生的webrtc连接xbox主机,会出现已经连接,且出现了串流画面,但过一分钟会被主机端踢下线(错误关键字:kick for no client connection),使用同样的实现在云游戏没有问题,至今还没有解决这个问题,感兴趣可以参考webrtc分支的实验性代码。
尝试解决
- 在v1.0.0加入了微软的STUN服务器做为首选。
- 以往的版本会缓存用户的token以减少每次登录的时长(缓存时间一小时),这也会导致相同的token在发起串流回话时会有相同的sessionID,也就是这个sessionID一旦卡住,无论后续试多少次,主机端都视为一个会话,从而导致一直无法连接。v1.0.0加入了连接失败提示,出现这个提示点击弹窗的刷新按钮可以彻底清空缓存,从而在下次发起串流会话时用新的sessionId访问主机,个人亲测出现连接卡住后重试几次可以正常连接,如果实在无法连接,那么尝试先使用官方xbox应用远程连接一次,再使用XStreaming进行连接,成功率可以大大提高。
xbox的webrtc当然是符合webrtc标准协议,主要是2个方面。
- 候选地址是否过滤了ipv6。内网也不存在连不上的问题只要是做了正确的stun
- 连接上后需要不停的发送心跳包,否则会被踢下线。 greenlight的代码里有具体实现
对了,想跟你请教一下,ice候选过滤掉ipv6是出于什么考虑的?我刚才试验了下把候选逐一过滤,发现如果候选ip不通就会出现连接失败的情况,之前反馈的问题我想大概率就是解析候选键选到错误的ip了
这个问题我来解释一下,先说结论:目前这个问题暂时不能彻底解决。
以下解释只适用主机可以正常远程串流的场景,网络环境没设置好的情况不在解释范围内。
卡在正在连接的原因
在出现
Ice交换成功,正在建立连接
的时候,客户端已经找到了主机IP,正在进行P2P直连的最后阶段,输入通道正在等待主机端的connected
响应,详细代码实现查看此处,也就是客户端一直接收不到主机的connected
信号,导致串流连接直接卡住了,目前这个问题基本出现在远程串流Xbox主机会出现这个问题。个人猜测
个人猜测这个问题出现的原因大概率是因为Xbox主机使用的WebRTC协议不是标准协议,导致有时候会出现WebRTC连接没有响应的情况,而官方xbox应用可以在多数情况下成功连接也正是有这个特殊的协议实现,而这个特殊的协议实现目前还未知,因此不能彻底解决。这个推测的依据有以下两点:
- 串流云游戏跟串流主机使用的是相同的逻辑,云游戏没有出现过卡在正在连接的情况。
- 我尝试过使用安卓原生的webrtc连接xbox主机,会出现已经连接,且出现了串流画面,但过一分钟会被主机端踢下线(错误关键字:kick for no client connection),使用同样的实现在云游戏没有问题,至今还没有解决这个问题,感兴趣可以参考webrtc分支的实验性代码。
尝试解决
- 在v1.0.0加入了微软的STUN服务器做为首选。
- 以往的版本会缓存用户的token以减少每次登录的时长(缓存时间一小时),这也会导致相同的token在发起串流回话时会有相同的sessionID,也就是这个sessionID一旦卡住,无论后续试多少次,主机端都视为一个会话,从而导致一直无法连接。v1.0.0加入了连接失败提示,出现这个提示点击弹窗的刷新按钮可以彻底清空缓存,从而在下次发起串流会话时用新的sessionId访问主机,个人亲测出现连接卡住后重试几次可以正常连接,如果实在无法连接,那么尝试先使用官方xbox应用远程连接一次,再使用XStreaming进行连接,成功率可以大大提高。
xbox的webrtc当然是符合webrtc标准协议,主要是2个方面。
- 候选地址是否过滤了ipv6。内网也不存在连不上的问题只要是做了正确的stun
- 连接上后需要不停的发送心跳包,否则会被踢下线。 greenlight的代码里有具体实现
对了,想跟你请教一下,ice候选过滤掉ipv6是出于什么考虑的?我刚才试验了下把候选逐一过滤,发现如果候选ip不通就会出现连接失败的情况,之前反馈的问题我想大概率就是解析候选键选到错误的ip了
也遇到这种情况。9002、3074端口是会打开的,且xbox官方app是可以串流成功的。但是xstreaming串流出现ICE连接的问题。异地时只有vpn回家,在同一局域网下,才能串流成功。
此前路由器防火墙内专门屏蔽了xbox的ipv6地址分配,现在把屏蔽取消掉,xbox获取ipv6地址后。手机用数据网络链接成功。看来问题是出现在xbox的ipv6上???
之前没开启ipv6使用官方xbox应用也可以串流,你是有ipv4公网地址吗?
也遇到这种情况。9002、3074端口是会打开的,且xbox官方app是可以串流成功的。但是xstreaming串流出现ICE连接的问题。异地时只有vpn回家,在同一局域网下,才能串流成功。
此前路由器防火墙内专门屏蔽了xbox的ipv6地址分配,现在把屏蔽取消掉,xbox获取ipv6地址后。手机用数据网络链接成功。看来问题是出现在xbox的ipv6上???
之前没开启ipv6使用官方xbox应用也可以串流,你是有ipv4公网地址吗?
xbox放家里,有公网ipv4&ipv6,之前在openwrt路由器端防火墙中把xbox的ipv6分配给禁了。官方xbox app无论是ipv4&ipv6均可快速响应链接,但xstreaming在ice连接时不成功,提示nat打洞失败,只有vpn回家在同一局域网内才正常。后面把路由器对xbox ipv6的屏蔽关掉。现在xstreaming就可以在广域网正常链接xbox了。
xstreaming设置是默认的,优先ipv6这个选项关闭的,xbox主机的网络ipv4&ipv6公网。 当手机移动网络通过改apn,仅ipv4公网,测试无法连接。apn改为ipv4私网,ipv6公网时,可以连接成功。当手机vpn回xbox主机所在局域网时,无论xbox有无ipv6,均可连接。 目前看起来,如果不在同一网络,要求连接两端要ipv6公网,才能成功。在同一网络就没关系怎么都可以成功连接,测试供参考。
我这边之前开放了 88,3074,500,3544,4500
端口,发现也是会卡在 ICE 交换成功,最后参考了 XBXPlay 的文档,多开了一个 9002
端口就连得上了……
我的网络环境是双方都纯 IPv4,其中 Xbox 的网络有公网 IP
在家中,试过不开加速器和开加速器都是一样的问题,一直卡在Ice交换成功,正在建立连接……。换官方Xbox 串流正常。望继续努力。