HTML5是否允许Web应用程序进行点对点HTTP连接?

时间:2009-06-23 11:31:18

标签: javascript ajax html5

是否可以创建一个Web应用程序,在中央服务器的帮助下,可以与同一Web应用程序的其他用户建立直接连接?我想象的是一个类似于UDP打孔的过程。

我已经阅读了HTML5中的新WebSockets API,但看起来您必须在完全双工连接开始之前启动与WS兼容服务器的连接。我正在考虑更多关于在客户端之间建立直接连接的过程,而服务器在初始握手中仅涉及

注意:Java小程序不计算在内。我只对标准浏览器技术感兴趣。

6 个答案:

答案 0 :(得分:107)

而不是智能猜测,这是一个明智的答案:

HTML 5计划允许来自javascript的点对点连接,但这些连接不会是原始TCP。

完整的规范可以在http://dev.w3.org/html5/websockets/

找到

JRH

编辑:具体参考点对点连接,请查看以下链接:

值得注意的是,这些功能仍在协商中。能够创建“本地聊天”网络应用程序会很高兴:)

JRH

答案 1 :(得分:29)

更新10/17/2012 :此功能现在存在于Chrome Stable v22中。要在Chrome中使用此功能,必须在chrome:// flags:

中启用两个标记
  • 启用MediaStream
  • 启用PeerConnection

然后您可以访问AppRTC Demo Page来试用该演示。有关设置Chrome以使用点对点功能和启用设备捕获的详细说明,请参阅WebRTC - Running the Demos页面。


更新: Ericcson Labs的工程师在WebKit构建中有HTML5 Peer to Peer Conversational Video的概念证明。

他们在博客中展示了该技术的实际应用,以及该技术如何运作的图表和解释。

他们正在努力使其稳定并致力于WebKit存储库。

答案 2 :(得分:7)

是的,最后。

在撰写本文时(2017年),WebRTC现在是大多数现代浏览器的标准组成部分(约占使用中的70%),并允许多媒体流,点对点和打孔。

可以在html5rocks.com找到WebRTC的文档,示例代码和实时示例。

根据caniuse.comhtml5rocks.com,以下浏览器支持WebRTC:

全力支持: Edge 14,Firefox 22,Firefox Android 55
部分支持: Android浏览器56,Chrome 20,Chrome Android 29,Edge 12,Firefox 17,Opera 18,Opera Android 20,Opera Mobile 12,UC浏览器Android 11.4
未来支持(2017年第3季度):适用于iOS 11的Chrome,适用于iOS 11和OS X 10.11的Safari 11 不支持:IE,IE Mobile,Opera Mini

WebRTC的饱和率在Apple设备上受到限制,因为Safari 11尚未发布,需要iOS 11或OS X 10.11。虽然从过去的升级趋势预测,到2018年,大约75%的iOS设备应该可以使用WebRTC,到2020年将提供100%。

答案 3 :(得分:4)

为什么这会很棘手有很多原因:

  1. 防火墙(甚至只是普通的NAT)会在比HTTP更低的协议层上使这种连接变得困难。通过我的IT安全帽,这似乎是一种在机器上打开任意端口的好方法,只需访问一个网站 - 因此它几乎可以被所有公司IT系统主动阻止。
  2. HTTP本质上是一种客户端 - 服务器协议。虽然使用长轮询(以及其他几种技术)模拟双工通信相当容易,但效率并不高。
  3. 这将为XSS攻击打开一个大洞。
  4. WebSockets旨在解决第二个问题,但(故意,我希望)不是其他两个问题。当他们谈论HTML5规范中的点对点时,他们谈论的是服务器和客户端之间的全双工通信,而不是一个客户端与另一个客户端之间的全双工通信。

    但是,在websockets上实现适当的网络堆栈会很简单 - 条件是所有通信仍然必须通过服务器完成。我已经看到这使用长轮询完成(我的一个朋友在Uni使用长轮询写了一个完整的TCP / IP堆栈)。

答案 4 :(得分:0)

我第二次harshath.jr:您可以将服务器充当目录(暴露每个连接代理的“起源”;来源是方案+主机+端口,如draft-abarth-origin,方案是“ws”或“wss”)。然后,您可以启动对等WebSocket连接;由于SOPCORS正在进行中。当然,这意味着每个代理(即浏览器)都必须嵌入自己的WebSocket服务器(即Opera Unite)。

同时,做XMPP / IRC /等方式:没有点对点连接,但是WebSocket连接到中央服务器(或网络!)以将消息传递给连接的代理(最终使用一些特定的WebSocket“子协议”)

编辑:请注意,所有这些实际上都超出了HTML5的范围(所有这些都曾经是HTML5的一部分,但已被拆分为他们自己的规范)

答案 5 :(得分:0)

Web套接字的整体思想是解决防火墙和代理问题http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket