能否使用JavaScript制作无需服务器的P2P聊天?

3

最近我被选为学习课程的后端负责人。我们需要为聊天应用程序编写后端,使用户能够P2P通信而无需任何服务器代码(我知道这意味着没有后端,但我的教授不是技术人员)。我问他是否可以使用webrtc,但他不喜欢使用STUN和TURN服务器的想法。因此,我的主要问题是,这是否可能?我们正在谈论将在浏览器中运行而不是直接在操作系统中运行的应用程序。如果可能的话,我们可以使用哪些协议/ API来实现它?


Web服务允许吗?因为您可能会使用Firebase等服务。 - Hagai Harari
不,该应用程序不应与任何网络服务通信。完全点对点。 - sadowy
1个回答

2

我不确定我是否正确理解了您的问题,所以这里是一些常规信息:

作为P2P API的WebRTC在很大程度上依赖于服务器。

  1. "ICE":
    要将一个对等端连接到另一个对等端,对等方需要知道它们的IP地址以交换数据。他们可以“询问”其操作系统以获取注册的IP地址,但这只会产生127.0.0.1和本地网络IP。这适用于同一台计算机上的连接或同一本地网络中的计算机之间的连接,但对于其他所有内容都会失败。
    ICE服务器STUN和TURN是必需的,因为您的浏览器客户端位于路由器的网络地址转换(NAT)后面。如果STUN失败,则STUN获取NAT的IP地址和端口,而TURN则将数据包转发为已知的公共IP地址。

  2. "信令":
    假设您的对等端知道自己的可达IP地址(-可能使用STUN甚至使用TURN的NAT IP和端口)。即使他们知道可达IP,他们也必须告诉另一个对等方该IP实际上是他们的IP,并且要用于联系他们的IP。他们还必须告诉其他对等方一些其他技术信息,以使数据传输工作。要使用WebRTC,您需要拥有一个WebSocket服务器(或Server-Sent-Events和HTTP Post消息的组合),该服务器转发此信息。 在一切都建立好之后(他们知道各自的IP和端口、技术信息等等),您就可以通过WebRTCs数据通道发送数据。


    我的建议:
    不要为给定的用例使用WebRTC。如果您不想使用后端服务器,则必须搜索“无服务器”Web应用程序。P2P将始终依赖于某种类型的服务器来启动连接。如果使用“无服务器”架构,则其他人正在托管您想要使用的服务器/聊天服务(也通常称为“基于云”的服务)。如果涉及原型应用的托管成本,您可以查看heroku.com、aws.amazon.com、zeit.co、firebase.google.com或其他具有免费、限制(测试)计划的托管提供商。


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