通过WebRTC实现局域网p2p文件传输功能(新版)

木头的喵喵拖孩

项目介绍

之前曾经有过一次想实现这个功能,但是问题很多就烂尾了,见通过 WebRTC 实现局域网 p2p 文件传输功能,最近突然想到了解决办法,于是真正的完成了这个功能。

项目已经上传github ,持续维护中。

这里要注意下,该项目仅仅实现了可以在简单的局域网中(单层局域网)中的文件传输功能,不能实现跨层级的局域网和外网文件传输功能,所以并没有使用到 STUN 和 TURN 服务器,只使用了 websocket 服务器来交换必要的信息然后建立 WebRTC 连接。

部署

如果只是简单的部署,直接看github 的 README.md 就可以了。

你可以部署在专用服务器上,也可以部署在自己的电脑上,
如果你想让服务跟随系统启动,也可以自己去把这个服务添加到系统启动项中。

部署在 linux 服务器上

传统做法是将项目部署在专用的 linux 服务器(这里特指 ubuntu)上,一般是将其添加为服务,然后跟随系统启动。

首先进入你的用户根目录,然后 clone 项目

1
2
3
4
5
6
7
# 进入你的用户根目录,然后clone项目
cd /home/user
git clone https://github.com/GJYyyyy/sendByWebRTC.git

# 进入项目目录安装必要依赖
cd sendByWebRTC
npm install

然后需要在你的服务器上添加一个服务,进入目录 /etc/systemd/system 创建服务配置文件 _sendByWebRTC.service_,填写以下内容:

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=sendByWebRTC

[Service]
User=user
WorkingDirectory=/home/user/sendByWebRTC
ExecStart=/usr/bin/npm run start

[Install]
WantedBy=multi-user.target

创建好服务配置文件后,还需要去开放端口 60888 和 60999,
最后启动这个服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 刷新服务列表
sudo systemctl daemon-reload
# 使服务跟随系统启动
sudo systemctl enable sendByWebRTC.service
# 启动服务
sudo systemctl start sendByWebRTC.service
# 查看服务状态
sudo systemctl status sendByWebRTC.service

# 停止服务(可选,但是这里不需要执行)
# sudo systemctl stop sendByWebRTC.service
# 取消服务自启动(可选,但是这里不需要执行)
# sudo systemctl disable sendByWebRTC.service

运行成功后,在局域网中任何一台设备上访问 http://你部署项目的局域网地址:60888 就可以使用了。

部署在 windows 服务器上

如果你没有专用服务器,或者你在你的局域网中没有权限访问服务器,那么可以将项目部署在自己的电脑上,局域网中的其他设备同样可以访问。

首先随便找个地方新建一个目录,这里假设目录是 _C:\yourFolder_,打开 cmd,然后 clone 项目

1
2
3
4
5
6
7
# 进入你创建的目录,然后clone项目
cd C:\yourFolder
git clone https://github.com/GJYyyyy/sendByWebRTC.git

# 进入项目目录安装必要依赖
cd sendByWebRTC
npm install

紧跟着上面的操作,为了创建 windows 服务,需要在项目根目录下创建一个 start.bat 文件,内容如下:

1
2
@echo off
node C:\yourFolder\sendByWebRTC\src\server.js

然后重新打开一个 cmd,一定要用 管理员权限打开,否则会出现权限不足的错误。执行下面的命令来创建服务。
创建服务后,还需要去开放端口 60888 和 60999。

1
2
3
4
5
6
7
8
9
10
11
# 创建服务
# binPath: 服务启动的命令
# start: 启动方式,auto 表示随系统启动
sc create sendByWebRTC binPath= "cmd.exe /c \"C:\yourFolder\sendByWebRTC\start.bat\"" start= auto
# 启动服务
sc start sendByWebRTC

# 停止服务(可选,但是这里不需要执行)
# sc stop sendByWebRTC
# 删除服务(可选,但是这里不需要执行)
# sc delete sendByWebRTC

运行成功后,在局域网中任何一台设备上访问 http://你部署项目的局域网地址:60888 就可以使用了。

  • 标题: 通过WebRTC实现局域网p2p文件传输功能(新版)
  • 作者: 木头的喵喵拖孩
  • 创建于: 2025-12-29 15:52:51
  • 更新于: 2025-12-31 14:36:37
  • 链接: https://blog.xx-xx.top/2025/12/29/通过WebRTC实现局域网p2p文件传输功能(新版)/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
此页目录
通过WebRTC实现局域网p2p文件传输功能(新版)