如何将浏览器设置为浏览器(对等)连接?
我怎么能写在客户端使用HTML5,CSS和的JavaScript一个网站,将允许客户端浏览器之间直接TCP/IP连接,一旦页面加载。如何将浏览器设置为浏览器(对等)连接?
我需要这样做以减少等待时间,因为网站会要求其中一个用户的输入尽快传输给另一个用户,因此将数据从客户端A发送到服务器,然后发送到客户端B不是一个好的选择。
我读过此主题的以前的帖子,但没有可以找到的工作解决方案/示例。从我读到的客户端之间的直接连接可以使用插件,如Silverlight,Java或Flash。
有没有解决方案不需要插件?我只想使用JavaScript。
这里#2是关于P2P连接几个主题在浏览器:
- Will HTML5 allow web apps to make peer-to-peer HTTP connections?
- What techniques are available to do P2P in the browser?
- Does HTML5 Support Peer-to-Peer (and not just WebSockets)
- Can HTML5 Websockets connect 2 clients (browsers) directly without using a server (P2P)
- Is it possible to create peer-to-peer connections in a web browser?
- Do websockets allow for p2p (browser to browser) communication?
- HTML 5 Peer to Peer Video Possibilities?
- Is WebRTC implemented in any browsers yet?
在大多数的topicts的所提到的,既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
由于th e W3C Working Draft 12 February 2009“对等连接”部分消失。但是这个P2P连接并没有消失。这回的WebRTC(实时通信)规范中的名称PeerConnection这下:
- http://dev.w3.org/2011/webrtc/editor/webrtc.html#peerconnection(W3C编者草案)
- http://www.whatwg.org/specs/web-apps/current-work/webrtc.html#peerconnection(Since 5th December 2011 forwarded to W3C Editor's Draft)
自2011年10月31日,W3C的编者草案是一个正式的工作草案:
由爱立信实验室(2011年5月)修改的WebKit中存在PeerConnection(基于UDP)的唯一实现,该工具运行良好。有些补丁是在WebKit的,现在(2011年十月 - 见下面的更新!):
- https://labs.ericsson.com/apis/web-real-time-communication/
- https://labs.ericsson.com/developer-community/blog/update-webkit-contributions
此外,主动的WebRTC是由谷歌,Mozilla和Opera的项目。因此,他们继续在PeerConnection等规格:
大概浏览器(使用WebKit的)将配套的WebRTC与PeerConnection这第一大浏览器:
- 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 is supporting WebRTC as well。它可以用于Dev channel (Windows, OSX, Linux) and the Canary build (Windows and OSX),enabling it under chrome://flags
。它只支持MediaStream
,比如视频和音频,可以用几个Demos进行测试。直到现在,不支持传输像String
/ArrayBuffer
/...这样的应用程序数据。
由于16th March 2012, the WebRTC Editor's Draft分离出"Peer-to-peer Data API"发送和接收通用的应用程序数据(String
,ArrayBuffer
和Blob
)。 Chromium wants to implement the Data API soon(2012年4月10日)。
4月3日,Mozilla还发布了WebRTC for Firefox的第一个工作示例。
DataChannel计划在铬25版本,标志的后面,同时它可以在Firefox每晚/极光测试(2012 12月12日):
这是2014年,你可以更新你的优秀帖子与最近的进展? – myroslav
@myroslav http://www.webrtc.org/interop是一个很好的开始。到目前为止,Firefox,Chrome和Opera提供了全面支持,并且可以与适当的适配器进行互操作。 – msemelman
你可以请更新你的优秀帖子与最近的进展! – Abderrahim
我必须让你失望 - 目前只有JavaScript无法实现。 Websockets(和Socket.IO)允许客户端和服务器之间的类似于套接字的连接,但不允许客户端之间的连接。你的选择是一个插件 - 无论是Flash,Silverlight,Java或定制。
你可以做的是使用socket.io并通过编写一个简单的代理服务器来模拟它。
你确定WebSocket不允许在两个浏览器之间直接使用p2p吗?根据维基百科上的说法,它听起来像是这样:“WebSocket是一种通过单一传输控制协议(TCP)套接字提供双向,全双工通信信道的技术,它被设计用于在网络浏览器和网络服务器,但它可以被任何客户端或服务器应用程序使用。“ –
如果您无法使用浏览器'LISTEN' /充当服务器,则解决该问题。您将能够以全双工方式与任何服务器通信,但您的客户无法成为服务器。此外,如果可以的话,您将遇到数百万个与防火墙相关的问题。 Emil的解决方案会更好,尽管速度更慢。 – ghayes
从技术上讲,websockets可以在任何地方使用。但在浏览器中,由于安全限制,这不会发生。盖伊斯解释说。另外,请注意,这个解决方案可能**会更快**,因为通常服务器放置在具有巨大带宽容量的地方,所以您的服务器可以很好地处理100个客户端,而使用真正的p2p时,您将非常快速地饱和用户连接。 –
我想把你的注意力转移到现在的大多数用户都在NAT或防火墙后面,这意味着你不能轻松建立到用户计算机的传入连接。因此,您的想法(如果可能的话)只会在某些情况下发挥作用,并会给您的解决方案带来额外的复杂性。因此,具有可能持久连接的客户机 - 服务器系统(使用websockets或socket.io)是更好的选择。
的WebRTC对等连接,而信令服务器:http://blog.printf.net/articles/2013/05/17/webrtc-without-a-signaling-server/ – danijar
另见[PeerJS](http:// peerjs。这是一个在这个领域有一定牵引力的项目,它有相对不错的[浏览器支持](http://peerjs.com/status/)。 – Boaz
最简单的方法是使用http://httprelay.io和AJAX调用。速度很快,小于50ms。 – Jonas