是否可以在没有服务器的情况下使用javascript进行p2p聊天?

问题描述 投票:0回答:1

最近,我被选为我学习课程的后端激光打标机。假设我们为聊天应用编写BE,它将允许用户无需任何服务器代码即可进行p2p通信(我知道这意味着没有BE,但是我的老师不是技术人员)。我问过他是否可以使用webrtc,但他不喜欢使用STUN和TURN服务器的想法。所以我的主要问题是,这有可能吗?我们正在谈论的是将在浏览器中运行的应用程序,而不是直接在OS中运行的应用程序。如果是的话,我们可以使用哪些协议/ API来实现?

javascript chat p2p
1个回答
1
投票

我不确定是否能正确回答您的问题,所以这里有一些一般信息:

WebRTC作为P2P API严重依赖于服务器。

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

  2. “信号”:假设您的对等节点知道他们自己的可达IP地址(可能是使用STUN甚至是TURN的NAT IP和端口)。即使IF(!)他们知道自己的可达IP,也必须告诉其他对等方,该IP实际上是他们的IP和用于与他们联系的IP。他们还必须告诉其他对等方一些其他技术信息,以使数据传输正常工作。要使用WebRTC,您需要有一个WebSocket服务器(或服务器发送事件和HTTP发布消息的组合),用于转发此信息。一切都建立之后(他们知道它们各自的IP和端口,技术信息等),然后可以通过WebRTC的DataChannel发送数据。我的建议:对于给定的用例,请勿使用WebRTC。如果您不想使用后端服务器,则必须搜索“ serverless” Web应用程序。 P2P将始终依靠某种服务器来启动连接。如果您使用“无服务器”架构,则其他人将托管您要使用的服务器/聊天服务(通常也称为“基于云”)。如果是关于原型应用程序的托管费用,则可以查看heroku.com,aws.amazon.com,zeit.co,firebase.google.com或其他具有免费,有限(测试)计划的托管服务提供商。

© www.soinside.com 2019 - 2024. All rights reserved.