在没有第三方服务器的浏览器中每个对等体之间发送文本(或者仅在开始时使用服务器以使对等体彼此了解)

时间:2018-01-26 23:25:31

标签: javascript browser webrtc p2p peer

注意:我已经阅读了this个问题,主要答案以及所有相关问题(超过8个问题,例如this one,但它涉及Flash等。 )。他们都是〜2011年,由于WebRTC等新技术,事情可能会发生变化。

问题:

如果我将我的IP提供给朋友,并且他给了我他的IP,我们可以直接在浏览器中使用Javascript发送字节吗?(两个用户不在同一个本地网络中但通过互联网连接)

  1. 如果可能,没有任何第三方服务器。在这种情况下,我们都会加载一个包含Javascript代码的本地HTML文件,允许相互连接。似乎可以使用"chownat"执行此类操作:

      

    允许NAT后面的客户端与单独的NAT后面的服务器进行通信, no 端口转发 no DMZ设置, no 第三方参与

  2. 如果没有任何服务器是不可能的,那么是否可以在流程开始时涉及服务器? (使同伴相遇/相互了解/发起连接)。然后一旦建立连接,就不再需要服务器了:2个对等体相互发送字节,没有服务器。

  3. 现在是否可以使用标准浏览器(Firefox,Chrome等)并且没有任何路由器端口配置?以WebRTC为例?

    注意:我已经阅读了RTCDataChannel并尝试了Simple_RTCDataChannel_sample,但我不知道两个遥远的人如何使用它来相互联系,这个示例没有#&# 39;覆盖那个。这是live demo。我不知道如何将它变成互联网上两个同伴之间的联系。

1 个答案:

答案 0 :(得分:0)

  

如果我将我的IP提供给朋友,并且他给了我他的IP,我们可以直接在浏览器中使用Javascript向对方发送字节吗? [...]如果可能,没有任何第三方服务器。

不,WebRTC使用无法重用的会话建立令牌,必须为每个连接重新生成它们。 IP地址不足以建立连接,至少还必须手动生成和交换这样的令牌......

  

如果没有任何服务器是不可能的,那么是否可以在流程开始时涉及服务器?

是的,服务器将作为交换点来交换令牌,也可以作为STUN服务器。

  

现在是否可以使用标准浏览器(Firefox,Chrome等)并且没有任何路由器端口配置?

这取决于你的路由器,更具体地说,取决于types以及每一方有多少层NAT。但如果它们表现良好,那么浏览器将在STUN服务器的帮助下尝试NAT遍历以建立直接连接。

但是一般来说,浏览器在NAT遍历方面的功能要低于本机应用程序,因为本机应用程序可以与防火墙,UPnP / PMP / PCP路由器通信,也可以尝试NAT遍历技术(例如基于TTL的打孔,线性端口猜测) )这不是标准ICE / STUN方法的一部分。