Javascript 如何建立浏览器到浏览器(对等)连接?

Javascript 如何建立浏览器到浏览器(对等)连接?,javascript,html,tcp,p2p,tcp-ip,Javascript,Html,Tcp,P2p,Tcp Ip,如何在客户端使用HTML5、CSS和JavaScript编写一个网站,以便在加载页面后,在客户端浏览器之间实现直接tcp/ip连接 我需要这样做以减少延迟,因为站点将要求将其中一个用户的输入尽快传输到另一个用户,因此将数据从客户端A发送到服务器,然后再发送到客户端B不是一个好的选择 我以前读过关于这个主题的文章,但没有找到有效的解决方案/例子。据我所知,客户机之间的直接连接可以使用Silverlight、Java或Flash等插件实现 有没有不需要插件的解决方案?我只想使用JavaScript。

如何在客户端使用HTML5、CSS和JavaScript编写一个网站,以便在加载页面后,在客户端浏览器之间实现直接tcp/ip连接

我需要这样做以减少延迟,因为站点将要求将其中一个用户的输入尽快传输到另一个用户,因此将数据从客户端A发送到服务器,然后再发送到客户端B不是一个好的选择

我以前读过关于这个主题的文章,但没有找到有效的解决方案/例子。据我所知,客户机之间的直接连接可以使用Silverlight、Java或Flash等插件实现


有没有不需要插件的解决方案?我只想使用JavaScript。

我会让你失望的-目前仅使用JavaScript是不可能的。WebSocket(和Socket.IO)允许在客户端和服务器之间进行类似套接字的连接,但不允许在客户端之间进行连接。你的选择是一个插件-无论是Flash、Silverlight、Java还是定制的


您可以使用socket.io并通过编写一个简单的代理服务器来模拟它。

我想让您注意一个事实,现在大多数用户都在NAT或防火墙之后,这意味着您无法轻松建立到用户计算机的传入连接。因此,您的想法(如果可能的话)只在某些情况下有效,并且会给您的解决方案带来额外的复杂性。因此,可能具有持久连接(使用WebSocket或socket.io)的客户机-服务器系统是更好的选择

关于Stackoverflow,这里有几个关于浏览器中P2P连接的主题:

  • 正如大多数主题文章中提到的,2008年HTML5工作草案都有“对等连接”一节:

    因为“对等连接”部分消失了。但这种P2P连接并没有消失。它在WebRTC(实时通信)规范中的名称为PeerConnection:

    • (W3C编辑稿)
    • ()
    自2011年10月31日起,W3C编辑草案是一份正式工作草案:

    爱立信实验室(2011年5月)修改后的WebKit中存在唯一的PeerConnection(基于UDP)实现,该实现运行良好。WebKit中现在有一些补丁(2011年10月——请参阅下面的更新!):

    此外,WebRTC计划是由谷歌、Mozilla和Opera共同发起的一个项目。因此,他们继续使用PeerConnection规范:

    Chrome(使用WebKit)可能是第一款支持WebRTC和PeerConnection的主流浏览器:

    自2012年1月18日起。它可以用在由。它只支持像视频和音频一样的
    MediaStream
    ,并且可以用多种方式进行测试。传输应用程序数据,如
    String
    /
    ArrayBuffer
    /。。。直到现在才被支持

    因为分离了发送和接收通用应用程序数据的字符串(
    String
    ArrayBuffer
    Blob
    )。(2012年4月10日)

    4月3日,Mozilla也发布了第一个工作示例

    DataChannel计划用于Chrome的第25版,在一个标志后面,同时可以在Firefox每晚/Aurora中测试(2012年12月12日):

    2018年:数据通道仍处于试验阶段,但在当前版本的Chrome和Firefox中可用:


    您确定WebSocket不允许在两个浏览器之间进行直接p2p吗?从wikipedia上的说法来看,它听起来像是可以做到的:“WebSocket是一种通过单一传输控制协议(TCP)套接字提供双向、全双工通信通道的技术。它旨在在web浏览器和web服务器中实现,但它可以被任何客户端或服务器应用程序使用。”如果您不能让浏览器
    侦听
    /充当服务器,则会解决此问题。您将能够以全双工方式与任何服务器通信,但您的客户不能成为服务器。此外,如果可能的话,您将遇到一百万个防火墙问题。Emil的解决方案虽然速度较慢,但效果会更好。从技术上讲,WebSocket可以在任何地方使用。但在浏览器中,由于安全限制,这种情况不会发生。盖耶斯解释了这一点。另外,请注意,此解决方案可能会更快,因为通常服务器放置在具有巨大带宽容量的位置,因此您的服务器可以很好地处理100个客户端,在使用真正的p2p时,用户连接很快就会饱和。@Emil Ivanov:你说的没错,但如果只是1对1连接,应该会更快。WebRTC对等连接没有信令服务器:另请看,这是一个在这一领域有一定吸引力的项目,相对来说比较不错。最简单的方法是使用和AJAX调用。速度很快,不到50毫秒。现在是2014年,你能用最新的进展更新你的优秀帖子吗?@myroslav是一个很好的起点。到目前为止,Firefox、Chrome和Opera提供了全面的支持,并且可以与addequate适配器进行互操作。我很快就会做到!2016年在澳大利亚。我们可以得到浏览器点对点的最新链接吗?是的,更新怎么样?