为啥即使使用 HTML5 也没有通过浏览器的 UDP 连接?
Posted
技术标签:
【中文标题】为啥即使使用 HTML5 也没有通过浏览器的 UDP 连接?【英文标题】:Why no UDP connection via browser even with HTML5?为什么即使使用 HTML5 也没有通过浏览器的 UDP 连接? 【发布时间】:2013-07-15 15:48:26 【问题描述】:为什么我们不能在浏览器和服务器之间建立 UDP 连接?为什么 TCP 连接可以(通过 WebSockets)而 UDP 不可以?
【问题讨论】:
因为 websockets 是建立在 TCP 之上的。 chrome 打包应用可以访问 UDP io 的 API。 你能解释更多,我可以用谷歌搜索吗?那个 API 是什么?你说的是 webRTC 吗? 【参考方案1】:html5 不允许任意 TCP 连接。
相反,Web 套接字是一种基于 TCP 的特殊新协议,它允许双向通信。
同样,WebRTC 是一种基于 UDP 的特殊新协议,允许点对点通信。
允许任意套接字连接将是一个主要安全漏洞。
【讨论】:
没错,但是websocket也是TCP的,没有UDP @Cgraphics:允许 UDP Web 套接字是没有意义的。 Web 套接字依赖于 TCP 的属性,例如排序和保证交付。 注意:WebRTC 仅在 Firefox 的 UDP 之上实现。【参考方案2】:您可以使用最新版本的 Chrome 和 Firefox 中提供的 WebRTC 访问 UDP。这使您可以直接进行浏览器 - 浏览器连接,而无需通过服务器等。
【讨论】:
很好,我们也可以在浏览器和服务器之间建立 UDP 连接吗?我猜对了? 其实RTC还是需要一个服务器来握手,从显示的文字中看不清楚... 我相信这是可能的,是的。您将需要有 WebRTC 协议的服务器端实现。我听说过这样的事情正在谈论,但我不知道任何实际的实现。 是的,webRTC 使用 ICE en.wikipedia.org/wiki/Interactive_Connectivity_Establishment 协商连接,可以在服务器端实现。使用 libjingle developers.google.com/talk/libjingle - 您应该能够创建客户端/服务器 udp 连接,尽管这可能非常具有挑战性。以上是关于为啥即使使用 HTML5 也没有通过浏览器的 UDP 连接?的主要内容,如果未能解决你的问题,请参考以下文章
为啥即使没有争用,我的 Oracle PreparedStatement 有时也不会返回?