我怎样才能使浏览器浏览器(对等)连接?
我怎样才能在客户端使用HTML5 , CSS和JavaScript编写一个网站, 一旦页面被加载 ,将允许客户端浏览器之间的直接的TCP / IP连接 。
我需要这样做,以减less延迟,因为网站将要求从其中一个用户的input尽快传输到另一个用户,所以从客户端A到服务器,然后再到客户端B的数据是不是一个好选项。
我读了以前的这个主题的post,但没有可用的解决scheme/例子,我可以find。 从我读到的客户端之间的直接连接可以使用像Silverlight,Java或Flash插件。
有什么解决scheme,不需要插件? 我只想使用JavaScript。
在这里,Stackoverflow是关于浏览器中的P2P连接的几个主题:
- HTML5是否允许Web应用程序build立点对点的HTTP连接?
- 什么技术可以在浏览器中做P2P?
- HTML5是否支持点对点(而不仅仅是WebSockets)
- HTML5 Websockets可以直接连接2个客户端(浏览器)而无需使用服务器(P2P)
- 是否有可能在Web浏览器中创build点对点连接?
- websocket是否允许p2p(浏览器到浏览器)通信?
- HTML 5点对点video可能性?
- WebRTC是否在任何浏览器中实现?
正如大部分主题所述,2008年的HTML5工作草案都有一个“对等连接”部分:
- http://www.w3.org/TR/2008/WD-html5-20080122/#peer-to-peer
- http://www.w3.org/TR/2008/WD-html5-20080610/comms.html#peer-to-peer
自W3C 2009年2月12日工作草案 “对等连接”一节消失了。 但是这个P2P连接并没有消失。 它在WebRTC(实时通信)规范中名称为PeerConnection:
- http://dev.w3.org/2011/webrtc/editor/webrtc.html#peerconnection(W3C Editor's Draft)
- http://www.whatwg.org/specs/web-apps/current-work/webrtc.html#peerconnection ( 自2011年12月5日转发给W3C编辑草案 )
自2011年10月31日起,W3C编辑草案就是一份正式的工作草案:
爱立信实验室(2011年5月)在修改后的WebKit中存在PeerConnection(基于UDP)的唯一实现,运行良好。 WebKit中现在有一些补丁(2011年10月 – 请参阅下面的更新!):
- https://labs.ericsson.com/apis/web-real-time-communication/
- https://labs.ericsson.com/developer-community/blog/update-webkit-contributions
此外,WebRTC计划是Google,Mozilla和Opera的一个项目。 因此,他们继续PeerConnection的规范:
可能Chrome(使用WebKit)将成为第一个支持WebRTC和PeerConnection的主stream浏览器:
- http://www.webrtc.org/blog/firststeptowardchromeintegration
- http://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/95bf1e2e1de852fc
- https://lists.webkit.org/pipermail/webkit-dev/2011-November/018445.html
自2012年1月18日起, Chrome也支持WebRTC 。 它可以在开发通道(Windows,OSX,Linux)以及Canary构build(Windows和OSX)中使用 ,方法是在chrome://flags
下启用它 。 它只支持像video和audio这样的MediaStream
,可以用几个演示testing。 像String
/ ArrayBuffer
/ …这样的应用程序数据传输到现在还不被支持。
自2012年3月16日起,WebRTC编辑草案将“对等数据API”分离为发送和接收通用应用程序数据( String
, ArrayBuffer
和Blob
)。 Chromium希望很快实施Data API (2012年4月10日)。
4月3日,Mozilla也发布了第一个关于Firefox的WebRTC的实例。
DataChannel计划在Chrome版本25后面加上一个标志,同时可以在Firefox Nightly / Aurora(2012年12月12日)进行testing:
我将不得不让你失望 – 目前只有JavaScript才能实现。 Websockets(和Socket.IO)允许客户端和服务器之间的类似于套接字的连接,但不允许客户端之间的连接。 你的select是一个插件 – 无论是Flash,Silverlight,Java或定制。
你可以做的是使用socket.io并通过编写一个简单的代理服务器来模拟。
我想把你的注意力转移到现在的大多数用户都在NAT或防火墙之后,这意味着你不能轻易build立到用户计算机的连接。 所以你的想法(如果可能的话)只会在某些情况下起作用,并会给解决scheme带来额外的复杂性。 因此,具有可能的持久连接(使用websockets或socket.io)的客户端 – 服务器系统是更好的select。