我的大学任务之一是开发一个 P2P 文件共享 Web 应用程序,以便在同一本地网络上的机器之间传输文件。我不是在寻找如何做到这一点的讲义,一旦我完成了高级设计,我就可以弄清楚,我只需要知道这是否合理。
我打算使用PeerJS库。据我所知,每个客户端都有一个唯一的 ID,这些 ID 用于将客户端相互连接。所以不知何故,我需要在同一本地网络上的所有客户端之间协调 ID。
我计划这样做的方式是让 NodeJS 服务器运行Socket.IO。当客户端加载 Web 应用程序时,它们会向 Node 服务器发送一个 websocket 请求。节点服务器然后记录客户端的外部IP地址。当另一个客户端连接并使用与另一个客户端相同的外部 IP 地址发出请求时,这两个客户端将被赋予彼此的 ID,以便它们可以相互连接。
这有几个潜在的问题:
- 我假设具有相同外部 IP 地址的人在同一个本地网络上。这在任何情况下都会出错吗?
- 我不知道客户端之间的文件传输将如何发生。理想情况下,它应该与本地网络隔离。例如,如果我在两台计算机之间传输文件,它将变为:
computer 1 -> router/switch -> computer 2
,而不是computer 1 -> router/switch -> local exchange -> ISP switch -> local exchange -> router/switch -> computer 2
. 基本上,传输不应该离开本地网络到互联网上。
想法?