没有服务器的情况下,浏览器之间是否可以进行通信?

21

有没有可能在局域网/广域网中使浏览器彼此通信而不使用服务器(直接点对点)?


对于所有询问为什么的人,我感兴趣的是是否有一种简单/快速的文件传输解决方案,而无需用户下载任何东西。 - CodyJames.LeBlanc
8个回答

9

1
一个例子:https://github.com/cowbell/sharedrop 这个使用 HTML5 和 WebRTC 通过局域网进行传输。 - CodyJames.LeBlanc
WebRtc使用信令服务器,仅用于连接初始化,但它使用。 - melanke

3

您可以尝试使用http://httprelay.io来处理AJAX调用。操作非常简单:

* Send data: POST https://demo.httprelay.io/link/your_secret_channel_id
* Receive data GET https://demo.httprelay.io/link/your_secret_channel_id

1
这是使用httprelay.io网站作为服务器。问题是关于没有服务器的点对点连接。 - Al Sweigart
即使是WebRTC在许多情况下也使用服务器。httprelay.io是一个更简单的解决方案。 - Jonas

1
如果浏览器被防火墙拦截,您可以考虑使用NAT穿透。WebRTC使用STUN和TURN协议来实现这一点。这个网站有一些不错的例子/教程 HTML5 Rocks

1
据我所知,Opera发布了一种浏览器附加功能,嵌入了一个Web服务器,仅供该功能使用:

http://unite.opera.com/

不确定它是否真正有所作为,但我认为它的时机会到来。


+1 有趣。但它并不直接连接,而是使用 Opera 服务器来绕过 NAT 限制(这实际上是唯一明智的方法)。http://www.jorgemarsal.com/blog/2009/06/16/how-does-opera-unites-file-sharing-service-work/ - Byron Whitlock
啊,我明白了。我原以为它使用零配置/Bonjour来解析本地客户端。哦,也许将来会用node.client.js + CouchDB或其他有趣的方式完成。 - guns

1

使用纯HTML / JavaScript? 可能不行。

据我所知,在本机JavaScript中没有很好的方法来监听连接。在HTTP中,客户端打开一个端口,发送请求并接收响应。您可以使用XHTTP或类似的类来发出请求,但是在普通网页中没有很好的方法来创建在另一端侦听请求的服务器。

鉴于此,我知道Flash提供了一个套接字库,允许您侦听连接。 (我想Silverlight也会这样做,尽管我没有研究过。)如果您使用这些技术之一创建对象,则可以从任何客户端侦听连接请求(假设您没有被防火墙或其他连接过滤设备所限制),维护打开的套接字并通过电线发送任何内容。

摘要:

  1. 可能无法在JavaScript / HTML / CSS中执行此操作。

  2. 但是,您可以在Flash或Silverlight中完成它。


0

简短回答:不行,不可能。

详细回答:你可以编写一个带有签名的Java小程序,在每个浏览器中实现一个Web服务器。然后浏览器“a”可以与浏览器“b”的小程序通信(不要关闭那个选项卡!)。通过这种方式,您将对其他浏览器状态进行有限访问。

同样地,您可以编写一个插件/附加组件来完成大部分相同的事情。

真正的问题是,为什么您想要这样做?您想要实现什么目标?回答这个问题,我们可能能够提出一个解决方案。


0

是的,它们可以,但需要设计以建立连接(或需要具有执行此操作的模块)。

即使我在想为什么他们需要这样做..


0

Flash - Stratus。最新的Flash中提供了P2P连接的新功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接