@hyxf/pairdrop 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -75
- package/bin/pairdrop.js +1 -1
- package/dist/assets/{index-BFMfhZgb.js → index-8y9Xz9H5.js} +2 -2
- package/dist/assets/index-BgdfyjM6.css +2 -0
- package/dist/index.html +2 -2
- package/dist-server/server.js +1 -1
- package/package.json +16 -27
- package/dist/assets/index-Cy2qcAPB.css +0 -2
package/README.md
CHANGED
|
@@ -1,105 +1,70 @@
|
|
|
1
1
|
# PairDrop
|
|
2
2
|
|
|
3
|
-
PairDrop
|
|
3
|
+
PairDrop 让附近设备通过浏览器发送文件和文本。设备连接到同一个 PairDrop 服务后,可以发现彼此;完成配对后即可传输。桌面和移动设备均可使用,目前界面仅提供英文。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本文面向安装和使用 PairDrop 的用户,介绍启动、配对、运行配置和常见连接问题。源码开发与实现细节见 [Web 客户端说明](apps/web/README.md) 和 [服务端说明](apps/server/README.md)。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- 配对设备以便之后互相发现。
|
|
9
|
-
- 设置并保存设备显示名称;通过配对码、邀请链接或系统分享面板(浏览器支持时)分享邀请。
|
|
10
|
-
- 保存接收的文件;浏览器支持文件分享时,也可通过系统分享面板分享文件。
|
|
11
|
-
- 桌面和移动设备均可使用响应式界面。目前界面仅提供英文。
|
|
7
|
+
## 安装与启动
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## 环境要求
|
|
16
|
-
|
|
17
|
-
- Node.js 22 或更高版本(与 `package.json` 中的最低版本一致)。
|
|
18
|
-
- Yarn Classic 1.22。
|
|
19
|
-
|
|
20
|
-
根据锁文件安装依赖:
|
|
21
|
-
|
|
22
|
-
```sh
|
|
23
|
-
yarn install
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
在同一局域网内使用时,其他设备可以打开运行服务的电脑所提供的局域网地址。请确认操作系统防火墙允许访问服务端口。设备发现和配对需要连接到同一个 PairDrop 信令服务。
|
|
27
|
-
|
|
28
|
-
## 本地开发
|
|
29
|
-
|
|
30
|
-
分别在两个终端启动信令服务端和客户端:
|
|
31
|
-
|
|
32
|
-
```sh
|
|
33
|
-
yarn dev:s
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
```sh
|
|
37
|
-
yarn dev:c
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
服务端默认监听 `3001` 端口,Vite 默认监听 `5173` 端口。请打开 Vite 输出的访问地址。Vite 会将 `/config` 和 WebSocket 路径 `/server` 代理到本地信令服务端。设置 `PORT` 可更改服务端端口;Vite 代理会使用相同端口。
|
|
41
|
-
|
|
42
|
-
## 生产环境
|
|
9
|
+
需要 Node.js 22 或更高版本。通过 npm 安装并启动:
|
|
43
10
|
|
|
44
11
|
```sh
|
|
45
|
-
|
|
46
|
-
|
|
12
|
+
npm install -g @hyxf/pairdrop
|
|
13
|
+
pairdrop
|
|
47
14
|
```
|
|
48
15
|
|
|
49
|
-
|
|
16
|
+
也可以使用简写命令 `pd`。服务启动后会打印 `http://localhost:3000` 和可用的局域网地址。在其他设备的浏览器中打开打印的局域网地址;这些设备需要能够访问运行 PairDrop 的电脑及其端口,操作系统防火墙也应允许该连接。服务默认监听所有 IPv4 网卡。
|
|
50
17
|
|
|
51
|
-
|
|
18
|
+
启动时可选择端口,或自动打开本机浏览器:
|
|
52
19
|
|
|
53
20
|
```sh
|
|
54
|
-
|
|
55
|
-
yarn pairdrop
|
|
21
|
+
pairdrop --port 4000 --open
|
|
56
22
|
```
|
|
57
23
|
|
|
58
|
-
`pairdrop
|
|
59
|
-
|
|
60
|
-
本地开发流程保持不变:分别运行 `yarn dev:s` 和 `yarn dev:c`,并访问 Vite 提供的地址。
|
|
24
|
+
使用 `pairdrop --help` 查看全部命令行选项。`PORT=4000 pairdrop` 也可设置端口;指定 `--open` 后,可通过 `BROWSER` 环境变量指定浏览器可执行文件。
|
|
61
25
|
|
|
62
|
-
|
|
26
|
+
## 配对与传输
|
|
63
27
|
|
|
64
|
-
|
|
28
|
+
1. 在两台设备上打开同一个 PairDrop 服务的地址。附近设备会显示在页面上,但配对前不能发送内容。
|
|
29
|
+
2. 在一台设备上打开配对窗口,使用另一台设备输入六位配对码,或扫描二维码、打开邀请链接。配对码有效期为五分钟。
|
|
30
|
+
3. 配对成功后,选择目标设备发送文件或文本。桌面端也可以将文件拖到设备卡片上。
|
|
31
|
+
4. 接收方确认文件请求后开始传输。传输完成时,请在接收设备上保存文件,或在浏览器支持时通过系统分享面板分享。
|
|
65
32
|
|
|
66
|
-
|
|
33
|
+
配对信息和自定义设备名称保存在浏览器本地存储中。清除浏览器数据后需要重新配对;刷新页面前请保存已接收的文件。单次传输最多 100 个文件,总大小不超过 256 MiB。
|
|
67
34
|
|
|
68
|
-
|
|
35
|
+
设备优先通过 WebRTC 直连;直连不可用时,本地信令服务默认使用 WebSocket 中继。WebRTC、剪贴板和移动端系统分享等功能受浏览器安全要求限制,建议通过 HTTPS 访问。某些网络环境需要配置 TURN 服务器才能建立 WebRTC 连接。客户端的传输与浏览器能力边界见 [Web 客户端说明](apps/web/README.md#功能与边界)。
|
|
69
36
|
|
|
70
|
-
##
|
|
37
|
+
## 运行配置
|
|
71
38
|
|
|
72
|
-
|
|
39
|
+
启动前可设置以下环境变量:
|
|
73
40
|
|
|
74
|
-
| 变量 | 说明
|
|
75
|
-
| ------------------- |
|
|
76
|
-
| `PORT` |
|
|
77
|
-
| `RTC_CONFIG` | WebRTC `RTCConfiguration` JSON
|
|
78
|
-
| `WS_FALLBACK` | 本地信令服务默认启用 WebSocket
|
|
79
|
-
| `SIGNALING_SERVER` |
|
|
80
|
-
| `IPV6_LOCALIZE` |
|
|
81
|
-
| `RATE_LIMIT` |
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `DEBUG_MODE` |
|
|
41
|
+
| 变量 | 说明 |
|
|
42
|
+
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
43
|
+
| `PORT` | 监听端口,默认为 `3000`;也可使用 `--port`。 |
|
|
44
|
+
| `RTC_CONFIG` | WebRTC `RTCConfiguration` JSON 文件路径,可在其中配置 TURN 服务器;默认使用 Google 公共 STUN 服务器。 |
|
|
45
|
+
| `WS_FALLBACK` | 本地信令服务默认启用 WebSocket 中继;设为 `false` 可关闭。 |
|
|
46
|
+
| `SIGNALING_SERVER` | 使用其他信令服务器,填写不含协议前缀的主机名及可选路径,例如 `pairdrop.example.com`。不能与 `RTC_CONFIG`、`WS_FALLBACK` 或 `IPV6_LOCALIZE` 同时使用。 |
|
|
47
|
+
| `IPV6_LOCALIZE` | 按缩短后的 IPv6 前缀对客户端分组,取值为 `1` 至 `7` 个网段。 |
|
|
48
|
+
| `RATE_LIMIT` | 设为 `true` 启用 HTTP 速率限制,默认为 `false`。 |
|
|
49
|
+
| `TRUSTED_PROXY_IPS` | 受信任反向代理的 IP,多个 IP 用逗号分隔;未设置时不信任转发请求头。 |
|
|
50
|
+
| `LOG_LEVEL` | 服务端日志级别;生产环境默认为 `warn`,可设为 `info` 或 `silent`。 |
|
|
51
|
+
| `DEBUG_MODE` | 设为 `true` 输出诊断日志;日志可能包含配置信息。 |
|
|
85
52
|
|
|
86
|
-
例如,使用自定义 RTC
|
|
53
|
+
例如,使用自定义 RTC 配置并监听 `4000` 端口:
|
|
87
54
|
|
|
88
55
|
```sh
|
|
89
|
-
PORT=4000 RTC_CONFIG=./rtc-config.json
|
|
56
|
+
PORT=4000 RTC_CONFIG=./rtc-config.json pairdrop
|
|
90
57
|
```
|
|
91
58
|
|
|
92
|
-
`RTC_CONFIG`
|
|
59
|
+
`RTC_CONFIG` 文件应符合浏览器的 WebRTC `RTCConfiguration` 格式。请妥善保管其中的 TURN 凭据。使用反向代理时,应由代理正确设置 `X-Forwarded-For`,并清理客户端提供的 `CF-Connecting-IP`。
|
|
93
60
|
|
|
94
|
-
|
|
61
|
+
## 连接问题排查
|
|
95
62
|
|
|
96
|
-
|
|
63
|
+
- 看不到其他设备时,确认两台设备打开的是同一个 PairDrop 服务,并检查局域网连通性、防火墙与监听端口。
|
|
64
|
+
- 页面更新后无法连接时,重新打开所有设备上的 PairDrop 页面,避免旧页面继续使用不兼容的传输协议。
|
|
65
|
+
- WebRTC 无法直连时,可保持默认启用的 WebSocket 中继;跨网络使用时,可通过 `RTC_CONFIG` 配置 TURN 服务器,并通过 HTTPS 提供页面。
|
|
97
66
|
|
|
98
|
-
|
|
99
|
-
yarn typecheck
|
|
100
|
-
yarn lint
|
|
101
|
-
yarn format:check
|
|
102
|
-
yarn build
|
|
103
|
-
```
|
|
67
|
+
## 源码开发
|
|
104
68
|
|
|
105
|
-
|
|
69
|
+
- [Web 客户端说明](apps/web/README.md):前端结构、功能边界、本地开发和构建。
|
|
70
|
+
- [服务端说明](apps/server/README.md):服务端模块、状态归属、协议和发布流程。
|
package/bin/pairdrop.js
CHANGED
|
@@ -113,7 +113,7 @@ function waitUntilReady(child) {
|
|
|
113
113
|
async function startPairDrop({ port, open }) {
|
|
114
114
|
if (!existsSync(distPath) || !existsSync(serverEntry))
|
|
115
115
|
throw new Error(
|
|
116
|
-
'Built PairDrop files were not found. Run `
|
|
116
|
+
'Built PairDrop files were not found. Run `pnpm build` before starting PairDrop.',
|
|
117
117
|
)
|
|
118
118
|
|
|
119
119
|
const child = spawn(process.execPath, [serverEntry], {
|