一款开源的P2P聊天和文件传输工具,可以帮助你快速、安全地传输文件。提供文件同步、断点续传、剪贴板传输、视频通话等功能。

文摘   2024-11-27 10:09   广东  

weblink

Weblink 是一款基于 WebRTC 的P2P聊天和文件传输工具,它可以帮助你快速、安全地传输文件。提供文件同步、进度显示、断点续传、文件夹传输、剪贴板传输、文件缓存、视频通话等多种功能。此项目是纯Web应用,无需安装。功能较多实现比较复杂,如果遇到不稳定的情况,请尝试刷新页面,信息不会丢失。

Github地址

https://github.com/99percentpeople/weblink

在线体验

https://webl.ink/

功能

Weblink 目前支持以下功能:

功能描述
✅ 文件同步获取对方缓存的文件,并获取文件
✅ 断点续传文件传输过程中,如果连接中断,可以续传
✅ 文件缓存传输的文件会被缓存到 IndexedDB
✅ 文件搜索可以搜索自己和对方在缓存中的文件
✅ 视频通话可进行视频通话
✅ 剪贴板传输对聊天窗口按 Ctrl + V,或在移动端输入框粘贴,可发送剪贴板内容
✅ 文件夹传输可发送文件夹,并自动压缩
✅ 压缩传输传输文件时,可选择压缩,文件将以区块为单位进行压缩并发送
✅ 多通道传输通过多个 DataChannel 实现并行数据传输,提升传输性能
✅ 分享转发PWA 安装后,可通过系统分享发送文字或文件
✅ 文字聊天可发送文字进行聊天

本地运行

git clone https://github.com/99percentpeople/weblink.git
cd weblinkpnpm install

确保你已经在项目中配置了 Firebase 的密钥(如下所示),然后运行以下命令:

进行开发
pnpm dev
构建
pnpm build

部署到 Docker

你可以使用 docker-compose.yaml 将项目部署到 Docker,并且会自动构建 weblink-ws-server 作为后端。

修改 docker-compose.yaml 文件以设置正确的环境变量,然后运行以下命令:

docker-compose up -d

启用 SSL 时,需要提供 SSL 证书 cert.pem 和密钥 key.pem 文件在 docker/ssl 目录下,然后运行以下命令:

ENABLE_SSL=true docker-compose up -d

你也可以使用 Dockerfile 部署到 Docker。

部署到 Vercel

你可以通过以下步骤将项目部署到 Vercel:

  1. 1. 前往 Vercel 网站 并登录(或创建一个账号)。

  2. 2. 连接你的 GitHub 仓库,选择你克隆的仓库。

  3. 3. 在 Vercel 项目设置中,找到 Environment Variables(环境变量),添加你的 Firebase API 密钥等环境变量(如下所示)。

  4. 4. 单击 "Deploy" 按钮,Vercel 将自动构建并部署你的项目。

环境变量配置 (Firebase)

在本地开发和部署到 Vercel 时,你需要配置 Firebase 的密钥。以下是需要添加的 Firebase 环境变量:

VITE_FIREBASE_API_KEY

VITE_FIREBASE_AUTH_DOMAIN

VITE_FIREBASE_PROJECT_ID

VITE_FIREBASE_STORAGE_BUCKET

VITE_FIREBASE_MESSAGING_SENDER_ID

VITE_FIREBASE_APP_ID

VITE_FIREBASE_DATABASE_URL

WEBSOCKET 配置

本应用可以自行部署 WEBSOCKET 服务器,已经提供了一个 WEBSOCKET 服务器,可以自行选择是否使用。详情请参考 weblink-ws-server

Vercel 环境变量配置

部署到 Vercel 时,请按照以下步骤设置环境变量:

  1. 1. 打开你的 Vercel 项目,进入 "Settings"。

  2. 2. 找到 Environment Variables。

  3. 3. 分别添加上述 Firebase 配置项,将对应的值填入字段中。

本地环境变量 (.env.local)

在本地开发时,创建一个 .env.local 文件,将 后端选择 FIREBASE 或 WEBSOCKET:

# 后端选择 FIREBASE 或 WEBSOCKET

# FIREBASE 配置
VITE_BACKEND=FIREBASE
VITE_FIREBASE_API_KEY=your-firebase-api-key
VITE_FIREBASE_AUTH_DOMAIN=your-firebase-auth-domain
VITE_FIREBASE_PROJECT_ID=your-firebase-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-firebase-storage-bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your-firebase-messaging-sender-id
VITE_FIREBASE_APP_ID=your-firebase-app-id
VITE_FIREBASE_DATABASE_URL=your-database-url

# WEBSOCKET 配置
VITE_BACKEND=WEBSOCKET
VITE_WEBSOCKET_URL=your-websocket-url

注意事项

STUN 和 TURN 服务器配置

如果你在非局域网(NAT 环境)下使用 P2P 连接,可能需要配置 TURN 服务器以确保能够建立连接。在设置页面中,你可以根据以下格式配置 TURN 服务器,支持 coturn 和 Cloudflare 提供的 TURN 服务,配置项之间用换行符分隔:

TURN 配置格式

# coturn 使用账号密码进行验证
turn:turn1.example.com:3478|user1|pass1|longterm
# coturn 使用时间戳进行验证
turns:turn2.example.com:5349|user2|pass2|hmac
# 使用 Cloudflare 提供的 TURN 服务器
name|TURN_TOKEN_ID|API_TOKEN|cloudflare

以下为一些公共 STUN 和 TURN 服务器的获取方法:

公共 STUN 服务器

此应用默认使用 Google 的 STUN 服务器,如果无法连接,请自行配置 STUN 服务器。可以参考 Public STUN server list · GitHub 获取公共 STUN 服务器列表。然后在设置页面中添加 STUN 服务器,格式为 stun:xxxx:xxxx。例如: stun:stun.l.google.com:19302

Cloudflare Calls TURN 服务器

可以使用 Cloudflare Calls 提供的 TURN 服务器,请访问 TURN Service | Cloudflare Calls docs。然后在设置页面中添加 TURN 服务器,格式为 name|TURN_TOKEN_ID|API_TOKEN|cloudflare

自建 TURN 服务器

可以参考 GitHub - coturn/coturn: coturn TURN server project 自建 TURN 服务器。

局域网内使用

应用目前支持在非安全环境下局域网内使用,局域网内使用时,请确保你的设备在同一个局域网内,并且防火墙没有阻止 P2P 连接。

并同时运行 weblink-ws-server 以支持 WEBSOCKET 连接。

免责声明:此应用使用P2P技术,所有数据储存在用户客户端(浏览器)中,服务器不存储任何用户数据,只负责转发信令。用户应自行承担使用风险,开发者不对任何数据丢失或隐私泄露负责。


github淘金
打破信息差,不为免费而付费。关注我,每日分享各种有趣,实用的开源项目。
 最新文章