HTML5是否允许Web应用程序build立点对点的HTTP连接?

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

我已经阅读了HTML5中的新WebSockets API,但在全双工连接开始之前,您似乎必须先启动与WS兼容服务器的连接。 我还在思考一个在客户端之间build立直接连接的过程,一个服务器只能在最初的握手中进行。

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

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

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

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

JRH

编辑:具体参考对等连接,看看这些链接:

  • 关于点对点连接: http : //www.w3.org/TR/2008/WD-html5-20080122/#peer-to-peer
  • 关于到本地networking的广播连接: http : //www.w3.org/TR/2008/WD-html5-20080122/#broadcast
  • 关于TCP连接(使用编码协议): http : //www.w3.org/TR/2008/WD-html5-20080122/#tcp-connections
  • 完整的build议规范: http : //www.w3.org/TR/2008/WD-html5-20080122/#network

重要的是要注意,这些能力还在谈判中。 这将是很好能够创build“本地聊天”networking应用程序:)

JRH

UPDATE 10/17/2012:这个function现在存在于Chrome Stable v22中。 为了在Chrome中使用此function,必须在chrome中启用两个标志:// flags:

  • 启用MediaStream
  • 启用PeerConnection

然后,您可以访问AppRTC演示页面来尝试演示。 请参阅WebRTC – 运行演示页面,了解有关设置Chrome以使用对等function和启用设备捕获的更多详细说明。


更新: Ericcson实验室的工程师在WebKit构build中具有HTML5对等会话video的概念validation。

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

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

有很多原因会导致棘手的问题:

  1. 防火墙(即使是普通的NAT)也会使得这种连接在比HTTP更低的协议层上变得困难。 随着我的IT安全帽,这似乎是一个很好的方式来打开机器上的任意端口,只要访问一个网站 – 所以它会被几乎所有的企业IT系统积极阻止。
  2. HTTP本质上是一个客户端 – 服务器协议。 虽然使用长轮询(以及其他一些技术)模拟双工通信是相当容易的,但并不是特别有效。
  3. 这将为XSS攻击打开一个大洞。

WebSockets旨在解决这些问题中的第二个,但是(故意的是,我期望)不是另外两个。 当他们谈论HTML5规范中的点对点时,他们谈论的是服务器和客户端之间的全双工通信,而不是一个客户端与另一个客户端之间的全双工通信。

但是,在websocket之上实现一个合适的networking堆栈会很简单 – 但是所有的通信都必须通过服务器完成。 我已经看到这个使用长轮询(我的一个朋友在Uni用长轮询写了一个完整的TCP / IP堆栈)。

是的,最后。

截至本文(2017年),WebRTC现在是大多数现代浏览器的标准部分(大约70%的使用者),并允许多媒体stream,点对点和打孔。

WebRTC的文档,示例代码和实例可以在html5rocks.com上find。

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

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

WebRTC的饱和率在Apple设备上受到限制,因为Safari 11尚未发布,需要iOS 11或OS X 10.11。 尽pipe从过去的升级趋势来看,到2018年,WebRTC应该占iOS设备的75%左右,到2020年将达到100%。

我第二harshath.jr:你可以很好地有一个服务器作为一个目录(暴露每个连接的代理的“起源”;起源是计划+主机+端口在草案abarth起源 ,该计划或者是“ws”或“wss”)。 然后,您可以启动点对点WebSocket连接; SOP正在通过感谢CORS的工作 。 当然,这意味着每个代理(即浏览器)将不得不embedded自己的WebSocket服务器(àla Opera Unite)。

与此同时,执行XMPP / IRC /等方式:没有对等连接,而是通过与中央服务器(或networking!)的WebSocket连接将消息传递给连接的代理(最终使用一些特定的WebSocket“子协议“)

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

Web Sockets的整个想法是解决防火墙和代理服务器的问题http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket