gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:13:07 24 4
gpt4 key购买 nike

最近我被选为我学习类(class)的后端lider。我们应该为聊天应用程序编写 BE,它允许用户在没有任何服务器代码的情况下进行 p2p 通信(我知道这意味着没有 BE,但我的教授不是技术人员)。我问他是否可以使用 webrtc,但他不喜欢使用 STUN 和 TURN 服务器的想法。所以我的主要问题是,这可能吗?我们正在谈论将在浏览器中运行的应用程序,而不是直接在操作系统中运行。如果是,我们可以使用哪些协议(protocol)/api 来实现这一目标?

最佳答案

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

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

  • 《冰》 :
    要将一个 Peer 连接到另一个 Peer,Peer 需要知道它们的 IP 地址以交换数据。他们可以向他们的操作系统“询问”注册的 IP,但这只会产生 127.0.0.1 和他们的本地网络 IP。这适用于同一台计算机上或同一本地网络中的计算机之间的连接,但其他一切都将失败。
    ICE 服务器 STUN 和 TURN 是必要的,因为您的浏览器客户端位于路由器网络地址转换 (NAT) 之后。 STUN 获取 NAT 的 IP 地址和端口,如果 STUN 失败,TURN 将数据包作为已知的公共(public) IP 地址转发。
  • “信号” :
    让我们假设,您的 Peers 知道他们自己的可访问 IP 地址(可能是使用 STUN 甚至 TURN 的 NAT IP 和端口)。偶如果 (!) 他们知道他们可访问的 IP,他们必须告诉其他 Peer 这个 IP 实际上是他们的 IP 以及用来联系他们的 IP。他们还必须告诉其他 Peer 一些其他技术信息,以使数据传输正常工作。要使用 WebRTC,您需要有一个 WebSocket-Server(或 Server-Sent-Events 和 HTTP Post Messages 的组合)来转发此信息。
    一切建立后(他们知道各自的 IP 和端口、技术信息等),您就可以通过 WebRTC 数据 channel 发送数据。

    我的建议:
    不要将 WebRTC 用于给定的用例。如果您不想使用后端服务器,则必须搜索 “无服务器”网络应用程序。 P2P 将始终依赖某种服务器来启动连接。如果您使用“无服务器”架构,则其他人正在托管您要使用的服务器/聊天服务(通常也称为“基于云的”)。如果是关于原型(prototype)应用程序的托管成本,您可以查看 heroku.com、aws.amazon.com、zeit.co、firebase.google.com 或其他提供免费、有限(测试)计划的托管服务提供商。
  • 关于javascript - 是否可以在没有服务器的情况下使用 javascript 进行 p2p 聊天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61227851/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com