我如何在客户端使用HTML5,CSS和JavaScript编写网站,以便在页面加载后允许客户端浏览器之间的直接tcp / ip连接。
我需要这样做以减少延迟,因为该站点要求将其中一个用户的输入尽快传输给另一用户,因此从客户端A到服务器再向客户端B发送数据并不是一个好习惯。选项。
我阅读了有关此主题的先前文章,但是没有可用的解决方案/示例。据我了解,可以使用Silverlight,Java或Flash等插件在客户端之间建立直接连接。
是否有不需要插件的解决方案?我只想使用JavaScript。
我如何在客户端使用HTML5,CSS和JavaScript编写网站,以便在页面加载后允许客户端浏览器之间的直接tcp / ip连接。
我需要这样做以减少延迟,因为该站点要求将其中一个用户的输入尽快传输给另一用户,因此从客户端A到服务器再向客户端B发送数据并不是一个好习惯。选项。
我阅读了有关此主题的先前文章,但是没有可用的解决方案/示例。据我了解,可以使用Silverlight,Java或Flash等插件在客户端之间建立直接连接。
是否有不需要插件的解决方案?我只想使用JavaScript。
Answers:
以下是Stackoverflow上有关浏览器中P2P连接的几个主题:
正如大多数主题中所提到的,两个2008 HTML5工作草案都有一个“对等连接”部分:
自2009年2月12日W3C工作草案以来,“对等连接”部分消失了。但是这种P2P连接没有消失。在WebRTC(实时通信)规范中,它以PeerConnection的名称返回:
自2011年10月31日起,W3C编辑器草案是正式的工作草案:
PeerConnection(基于UDP)的唯一实现存在于爱立信实验室(2011年5月)修改后的WebKit中,效果很好。WebKit现在提供了一些补丁程序(2011年10月-请参阅下面的更新!):
此外,WebRTC计划是Google,Mozilla和Opera的一个项目。因此,他们正在继续PeerConnection的规范:
可能是Chrome(使用WebKit)将成为第一个通过PeerConnection支持WebRTC的主流浏览器:
自2012年1月18日起,Chrome也开始支持WebRTC。通过在下启用它,可以在Dev通道(Windows,OSX,Linux)和Canary构建(Windows和OSX)中使用。它仅支持视频和音频,并且可以通过多个演示进行测试。到目前为止,不支持传输/ / ...之类的应用程序数据。chrome://flagsMediaStreamStringArrayBuffer
自2012年3月16日,的WebRTC编者草案分开一个“对等网络数据API”发送和接收通用应用程序数据(String,ArrayBuffer和Blob)。Chromium希望很快(2012年4月10日)实现Data API。
在4月3日,Mozilla也发布了第一个适用于Firefox的WebRTC实例。
DataChannel计划用于Chrome版本25,带有标记,同时可以在Firefox Nightly / Aurora中进行测试(2012年12月12日):
2018年:数据通道仍处于试验阶段,但在当前版本的Chrome和Firefox中可用:
我不得不让您失望-目前仅JavaScript无法实现。Websocket(和Socket.IO)允许在客户端和服务器之间进行类似套接字的连接,但不允许客户端之间进行类似套接字的连接。您可以选择使用插件-Flash,Silverlight,Java或定制。
您可以使用socket.io并通过编写一个简单的代理服务器来模拟它。
LISTEN/无法充当服务器,则该问题已解决。您将能够与全双工服务器进行通信,但是您的使用者不能成为服务器。此外,如果可能的话,您将遇到一百万个防火墙问题。Emil的解决方案虽然速度较慢,但效果更好。
我想提醒您一个事实,即当今大多数用户都位于NAT或防火墙之后,这意味着您无法轻松地建立与用户计算机的传入连接。因此,您的想法只会(在可能的情况下)仅在某些情况下有效,并且会给解决方案带来额外的复杂性。因此,可能具有持久连接(使用websockets或socket.io)的客户端-服务器系统是一个更好的选择。