Blaze 是一款文件共享渐进式 Web 应用(PWA),允许用户在多台设备之间传输文件。 它的工作原理类似于 SHAREit 或 Google 的 Files 应用,但使用 Web 技术来消除为不同设备和操作系统安装 原生应用的过程。它还支持同时与多台设备进行即时文件共享,这是许多文件共享应用所缺乏的。
Blaze 主要使用 WebTorrent 和 WebSockets 协议(作为回退方案)在多台设备之间传输文件。通过 WebTorrent 共享的文件是点对点的(因为它们内部使用 WebRTC),这意味着发送方和接收方之间直接传输,无需任何中间服务器。请注意,WebTorrent 中使用了 tracker 服务器,它们携带元数据并促进文件传输,但不会以任何形式获取完整文件。
功能
- 💡 无需创建账户或注册。
- 🚀 支持一对一和一对多文件传输。
- 🔮 可跨不同网络和设备使用。
- ⚡ 易于使用,且无需安装应用程序。
- 📱 提供 PWA 以实现设备级集成。
试一试!
- 访问 Blaze 的已部署客户端 - https://blaze.now.sh
- 设置一个基本昵称(此信息不会存储在任何服务器上)
- 创建一个新房间。房间是同伴必须加入以在彼此之间共享文件的地方。
- 在另一台设备上,按照上述步骤加入同一个房间。(请确保使用不同的昵称)
- 你的两台设备都应该显示出来。现在开始共享一些文件吧!
阅读更多关于 Blaze 基本工作原理的内容,请参见这篇 Medium 文章。
部署你自己的 Blaze 实例
阅读更多关于 在自有服务器上部署 的内容
赞助商
Blaze 由以下机构赞助:
构建过程
- 对于前端,webpack 通过 preact-cli 在内部进行配置。可以在
preact.config.js文件中进行修改。 - 对于后端,使用 sucrase 将 ES 模块的导入/导出转换为 CommonJS。
环境变量
可以在构建过程中设置以下环境变量:
| variable | description | default |
|---|---|---|
| client | 如果使用 Docker,client 的变量应设置为构建参数。 | |
WS_HOST | 运行 Blaze WebSockets 服务器的服务器 URL。 | 'ws://<your-local-ip>:3030' |
SERVER_HOST | 运行 Blaze HTTP 服务器的服务器 URL。 | 'http://<your-local-ip>:3030' |
WS_SIZE_LIMIT | 通过 WebSockets 传输文件时的最大文件大小限制(以字节为单位)。 | 100000000 (100 MBs) |
TORRENT_SIZE_LIMIT | 通过 WebTorrent 传输文件时的最大文件大小限制(以字节为单位)。 | 700000000 (700 MBs) |
| server | ||
ORIGIN | 允许 CORS 的字符串 URL 数组。 | * |
PORT | 服务器运行的端口。 | 3030 |
WS_SIZE_LIMIT | 通过 WebSockets 传输文件时的最大文件大小限制(以字节为单位)。 | 100000000 (100 MBs) |
DISABLE_SSE_EVENTS | 禁用服务器端事件以减少长连接。 | false |
TRUST_PROXY | 服务器是否位于可信代理之后,并且可以读取转发的 IP。 | 独立部署时为 false,docker-compose 中为 true |
注意: 环境变量中的任何 URL 都不应以 / 结尾。
在生产环境中运行 Blaze
使用 Docker 和 docker-compose 可以轻松地将 Blaze 部署到您自己的服务器上。前端和后端完全解耦。
Docker 镜像
以下 Docker 镜像可用:
-
Blaze Server:这是用于 WebSocket 通信的后端 Node.js 服务器。可以在前文中为服务器列出的环境变量传递给容器。它暴露端口
3030。 -
Blaze Client: 这是 Blaze 的前端渐进式 Web 应用,供客户端用于共享文件。Nginx 被用作此静态生成前端的 Web 服务器。上述列出的环境变量必须在构建镜像时作为 ARGS 传递。前端容器暴露端口
80。 -
Blaze: This is a higher level image that includes both Blaze Server and Blaze Client images above. It must be used when docker-compose is not available in the environment, or there is a limit to run only a single container. docker-compose must be used to run Blaze in other cases which is explained in next section.
Running high level Blaze image
docker run -p 8080:80 -p 3030:3030 -e PORT=80 akashhamirwasia/blaze:latest
NOTE: The
PORTenvironment variable and the container port should be the same.(In the above example, it is set as80).
使用 docker-compose
本项目根目录下存在一个 docker-compose.yml 文件,该文件用于运行服务器和客户端容器,并在 Nginx 配置中为前端的 WebSocket 连接设置代理。使用 docker-compose 运行:
git clone https://github.com/blenderskool/blaze
cd blaze
docker-compose up -d
通过 Node.js 直接运行
构建前端
npm run build:fe
前端构建后的代码将位于 client/build 目录中。
启动服务器和前端应用
npm start
现在可以通过端口 8080 访问 Blaze 应用 :tada:
隐私与分析
- Blaze 服务器不会跟踪或记录通过 WebSocket 和 WebTorrent 共享的文件。
- 任何与用户相关的数据(如昵称、房间名称)始终存储在设备上,仅在用户加入房间进行文件共享时与服务器共享。
- Blaze 客户端使用 Google Analytics 4 记录以下内容:
- 基本访问数据 的一部分 - 页面浏览量、滚动和出站点击,其余已禁用。
- 设备上是否安装了 Blaze PWA,以及是否使用共享目标共享文件。
贡献
有关贡献的文档可在 CONTRIBUTING.md 中找到
许可证
Blaze 采用 MIT 许可证