您能否通过Web套接字连接客户端而无需触及服务器?

5

我不太清楚如何在Google中搜索以下内容:

  • "client to client websocket connections"
  • "browser to browser websockets"
  • "websockets without a server"

哈哈,有没有办法让位于浏览器上的某人直接与另一个位于浏览器上的人进行通信,而不用经过服务器?

我非常熟悉 socket.io,但这需要所有客户端通过服务器发送消息,然后服务器可以将它们广播给其他连接的客户端。虽然我对Web套接字的细节不熟悉,但也许有一种方法可以在不通过服务器发送消息的情况下进行通信。

这是可能的吗? 我只想了解Web套接字功能的范围,您可以将其限制到哪里等等。


我不相信这是可能的。至少要有一个客户端像服务器一样运行才行。 - Some Guy
1
一个客户端能像服务器一样运作吗? - Lance
如果这是一个个人项目,你只是想连接到自己的计算机或其他设备,那么可以通过设置本地服务器(如XAMPP)并获取静态IP地址(或使用DynDNS)来实现。 - Some Guy
也许这个可以工作? http://stackoverflow.com/questions/13162470/communication-among-two-to-client-side-sessions-in-javascript - Yigit Pilevne
5个回答

12

不是Web Sockets,而是四年之后,现在我们有了浏览器对浏览器的通信!
http://www.webrtc.org/

已经建立了围绕它的JS库以使其更容易使用(例如:https://simplewebrtc.com/)。然而,这仍然需要一个服务器来协调连接。

我知道这个问题很古老,但当我搜索时,它出现在Google中,所以其他人可能也会遇到!


4
这是不可能的,你必须将服务器放在中间。

1

若要应用程序接受连接,必须打开服务器端口并侦听传入请求。您不能从浏览器公开服务器套接字。我不知道是否可以从小程序中公开服务器套接字。但即使您可以这样做,也需要知道其他客户端的IP地址以建立点对点连接。


0

一旦您有一个监听Websockets的客户端(为了通信而必须这样做),它就变成了服务器。


0

从技术上讲,当你进行广播时,客户端会向服务器发出emits,服务器会向所有人广播。我认为在当前的Web点对点连接架构下,这样的连接是不可能的。

但是,客户端可以发送一条消息到服务器,指定另一个客户端ID,服务器使用sessions将其发送给其他客户端,这是可能的。


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