Repolode
dmotz

dmotz/trystero

一个 JavaScript 库,让浏览器无需自建服务器即可通过 WebRTC 直接点对点通信,用于构建多人网页应用。

Star
2,796
Fork
161
未关闭 Issue
7
最近提交
前天

这是什么?

Trystero 解决了 WebRTC 建立连接前必须完成的配对问题。浏览器通过房间 ID 加入房间,并借助信令通道互相发现,信令可选 Nostr(默认)、BitTorrent、MQTT、IPFS、Supabase、Firebase 或自建的 WebSocket 中继。连接建立后,应用数据直接在端与端之间传输并经过端到端加密,信令通道只负责传递连接信息。

在 WebRTC 之上,它提供房间与广播、带类型的自定义消息动作、数据自动序列化与大数据分块、进度事件、请求/响应调用,以及音视频流的收发。同一套 API 可用于浏览器,也可在 Node、Bun 和 Deno 上运行,并附带 React Hooks。切换信令方式只需更换导入的包。

项目使用 TypeScript 编写,核心包以 trystero 发布到 npm,各信令策略则位于 @trystero-p2p 命名空间下。

核心功能

  • 01无需服务器,可通过 Nostr、BitTorrent、MQTT、IPFS、Supabase、Firebase 或 WebSocket 中继完成配对
  • 02提供房间、广播和带类型的自定义消息动作
  • 03自动序列化和分块传输大数据,并提供进度事件
  • 04支持在对等端之间共享音视频流
  • 05可选的密码会话加密,并支持配置 TURN 服务器
  • 06可在浏览器中运行,也可在 Node、Bun 和 Deno 服务端运行

适用场景

  • 在不维护后端的前提下开发浏览器多人游戏
  • 在用户之间搭建私密的音频或视频聊天室
  • 在网页应用中让浏览器之间直接传输文件
  • 在协作者之间同步光标、表单等共享状态

快速上手

  1. 1

    使用 npm 安装 Trystero

    npm i trystero
  2. 2

    在代码中导入 joinRoom

  3. 3

    使用唯一的 appId 和房间 ID 加入房间

使用前须知

  • 节点发现依赖第三方策略网络(如 Nostr、MQTT 或 Supabase),应用依赖于该网络可用。
  • 浏览器能同时处理的 WebRTC 连接数量有限,因此房间应保持较小规模。
  • 接收的文件必须能放入浏览器内存,且每个房间默认的接收额度为 256 MiB。

标签

常见问题

trystero 是什么?
一个 JavaScript 库,让浏览器无需自建服务器即可通过 WebRTC 直接点对点通信,用于构建多人网页应用。 Trystero 解决了 WebRTC 建立连接前必须完成的配对问题。浏览器通过房间 ID 加入房间,并借助信令通道互相发现,信令可选 Nostr(默认)、BitTorrent、MQTT、IPFS、Supabase、Firebase 或自建的 WebSocket 中继。连接建立后,应用数据直接在端与端之间传输并经过端到端加密,信令通道只负责传递连接信息。
trystero 可以免费使用吗?用的什么许可证?
trystero 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
trystero 还在维护吗?
活跃维护中。trystero 最近一次提交是在 2026年10月18日。
trystero 适合用来做什么?
在不维护后端的前提下开发浏览器多人游戏 在用户之间搭建私密的音频或视频聊天室 在网页应用中让浏览器之间直接传输文件 在协作者之间同步光标、表单等共享状态
trystero 怎么安装和运行?
使用 npm 安装 Trystero: npm i trystero 在代码中导入 joinRoom 使用唯一的 appId 和房间 ID 加入房间
在哪里获取 trystero?
源代码和安装说明在 GitHub 上:https://github.com/dmotz/trystero

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目