最近,我被选为我学习课程的背靠背。我们可以编写BE for聊天应用程序,允许用户在没有任何服务器代码的情况下与p2p通信(我知道这意味着没有,但我的支持者不是技术人员)。我问过他是否可以使用webrtc,但他不喜欢使用眩晕和打开服务器的想法。所以我的主要问题是,这有可能吗?我们讨论的是一个在浏览器中运行的应用程序,而不是直接在操作系统中运行的应用程序。如果是的话,我们可以使用什么协议/apis来实现这一点呢?
发布于 2020-04-16 14:42:27
我不确定我是否正确地回答了你的问题,以下是一些一般性的信息:
WebRTC作为P2P API严重依赖于服务器。
要将一个对等点连接到另一个对等点,对等方需要知道它们的IP地址来交换数据。他们可以“询问”他们的操作系统注册的IP,但这只会产生127.0.0.1和他们的本地网络IP。这适用于同一台计算机上的连接或同一本地网络中的计算机之间的连接,但对于其他所有的计算机,它都会失败。
由于您的浏览器客户端位于路由器网络地址转换(NAT)后面,因此ICE服务器的眩晕和转弯是必要的。STUN获取NATs IP地址和端口,并将数据包作为已知的公共IP地址(如果STUN fails.
让我们假设,您的同行知道他们自己的可访问IP地址(-可能是NATs IP和端口,通过使用眩晕甚至转弯)。即使是IF (!),他们也知道他们的可访问IP,他们必须告诉其他对等方,这个IP实际上是他们的IP和IP用来联系他们的。他们还必须告诉其他同行一些其他技术信息,以使数据传输工作。要使用WebRTC,您需要一个WebSocket(或服务器发送的事件和HTTP消息的组合)来转发这些信息。在一切建立之后(他们知道各自的is和端口、技术信息等等),您就可以通过WebRTCs DataChannels发送数据了。
我的建议:
不要将WebRTC用于给定的用例。如果不想使用后端服务器,则必须搜索"serverless" Web。P2P总是依赖某种服务器来启动连接。如果您使用的是“无服务器”架构,那么其他人正在承载您想要使用的服务器/聊天服务(也通常称为“基于云”)。如果是关于一个原型应用程序的托管成本,你可以看看heroku.com,aws.amazon.com,zeit.co,firebase.google.com或者其他免费的,有限的(测试)计划的托管提供商。
https://stackoverflow.com/questions/61227851
复制相似问题