WebRTC - 数据通道 - 适用于移动互联网
WebRTC - DataChannel - Suitable for mobile internet?
我使用了这段代码,这里解释了在不使用任何花哨的库的情况下创建一个webrtc数据通道连接。网络套接字用于信令。
现在,当我在具有全局 IP 的服务器上运行节点应用程序时,我可以通过 websocket 连接两个浏览器实例。然后,两个浏览器都能够通过数据通道进行连接。
现在,我使用手机浏览器(最新的chrome浏览器)替换了一个浏览器实例并尝试了相同的方法。可悲的是,没有建立任何联系。当我通过手机使用两个 2 浏览器实例时,每个实例都可以正常工作。
所以,如果两个浏览器不在同一台机器上,或者 NAT 遍历不适用于具有移动互联网的手机,那么信令可能有问题,这是我的怀疑,但我不确定。
有人可以肯定地说移动互联网设备理论上能够NAT遍历吗?(我不知道,移动提供商如何设置他们的网络拓扑)
通过移动网络连接的设备肯定能够遍历 NAT,但它要棘手得多,成功的可能性也更小。
当普通 STUN 不足以打孔时,您应该考虑使用 TURN 服务器作为后备。
我发现以下资源对此很有帮助:
- https://blog.andyet.com/2015/01/14/turn-for-webrtc(提到一些模块,让你运行自己的TURN服务器,困难)
- https://www.twilio.com/stun-turn(让您付费购买TURN使用,简单)
在生产环境中运行的任何服务都需要 TURN 服务器,否则它将不可靠且对用户来说不稳定。除非应用程序不需要两个用户之间的精确点对点连接。例如,WebTorrent就是这样一个项目,您只需要能够连接到某些对等方,而不是特定的对等方即可工作。
相关文章:
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- PHP中的setcookie仅适用于localhost
- html5 drawImage适用于firefox,而不是chrome
- 提供“;onClick"适用于iPad(触摸屏)和桌面用户的默认功能
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- ResolveUrl是否适用于././也
- Firebase updateChildValues适用于IOS,但不适用于Web和Android
- JavaScript警报适用于int,但不适用于string
- SQLite插件适用于Mac和Windows,但不适用于手机上的Safari
- Regex Replace仅适用于Last Match
- window.onload适用于aspx页面,但不适用于普通html
- Jquery Ajax POST不工作.适用于GET
- 画布上的自定义字体仅适用于safari
- Javascript仅适用于alert()和Debug模式
- JS适用于Firefox和Safari,但不适用于Chrome.此处'是我的网站
- Regex不适用于Firefox,但适用于Chrome
- 通过单击主菜单外部关闭子菜单'不适用于IE,但适用于Firefox&铬
- AngularJS$http.post没有'不适用于Chrome,仅适用于IE
- 移动隐藏菜单适用于jsfiddle,但不适用于在线.任何解决方案都会有所帮助
- 如何使用适用于 Node.js 的 AWS 开发工具包将 Amazon S3 中的所有对象从一个前缀复制/移动到另一个前