在不同网络中创建点对点连接是否可能?

4
我想在两个Node.js客户端之间创建点对点连接,使用WebSocket(dnode)。以下是限制条件:
- Node.js客户端运行在两台不同网络的计算机上。 - 它们没有静态IP地址(例如192.168.1.100和192.168.2.200),并且位于NAT或防火墙后面。 - 没有更改路由器映射的权限。 - 只有公共网络中的静态Web服务器(可以人工更改文件)。 - 可以在PC(Win)上安装应用程序。
请问这种情况是否可能实现?谢谢。

不,你在这两个网络之间没有路由。你需要重新配置路由器上的NAT,但你说你不能这样做。 - Brad
很遗憾,我认为没有希望了... 没有一个免费的节点服务器账户支持websocket。 - atian25
2个回答

3
你可以使用PeerJS来达到你的目标。 PeerJS简化了WebRTC点对点数据、视频和音频通话。PeerJS包装了浏览器的WebRTC实现,提供了一个完整、可配置且易于使用的点对点连接API。仅配备ID,节点就可以创建与远程节点的P2P数据或媒体流连接。
此外,为了代理连接,PeerJS连接到PeerServer。请注意,没有节点之间的数据经过服务器;服务器仅充当连接代理。

1

如果通过点对点连接,您指的是节点之间的直接连接(即不通过服务器),那么理论上在大多数情况下可能是可行的。但我从未见过有人实施这种解决方案。

您需要为TCP连接实现一个NAT穿墙系统(由于技术约束无法在软件层面解决,它们并不总是100%成功)。然后,您只需要在此TCP连接之上实现Websocket协议。

如果通过点对点连接,您可以使用中央服务器(具有公共地址)传递通信,则也是可能的。两个对等方只需连接到中央服务器,它应该只是在两个对等方之间传输流量。


如果使用点对点连接,您是否可以接受通信通过...只是在两个对等方之间建立连接时才需要,然后它们可以在不经过服务器的情况下进行通信?还是整个流量在连接生命周期内都必须通过服务器进行传输?(如果有视频流或文件共享,服务器连接将超载..) - Mehdi Karamosly
1
你需要先建立服务器联系,然后在许多情况下,它们可以直接通信。 - Jérôme Verstrynge
你有关于这个过程的文档或教程吗?我真的需要了解它是如何工作的。我需要直接与同行进行通信,而不仅仅是通过服务器的第一次联系。谢谢。 - Mehdi Karamosly

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