独立开发者笔记,非官方文档。内容以 webrpc 官网 公开说明与实际接入体验为准。
接入 webrpc 一段时间后,私信和评论里反复出现同一批问题:它到底是什么、没公网行不行、和 frp 比谁合适、Token 怎么用、文件怎么传、握手失败怎么办。这篇把我答过多次的内容收成一份 FAQ,方便对照自查。

先用一句话说清产品:
webrpc 是面向复杂网络与 NAT 的跨平台 P2P 通信 SDK。设备用 Token 标识,登录后建立加密会话,业务侧用接近 RPC 的方式调用 SendData / SendFile。官网与控制台:https://www.webrpc.cn/
Q1. webrpc 是什么?和"网上同名的代码生成项目"是一回事吗?
不完全是一类东西。
开源社区里也有叫 webrpc 的 schema / RPC 代码生成工具;本文说的是 webrpc.cn 上的 webrpc ------一套 P2P 通信 SDK / 平台,目标是让应用在无公网 IP 的情况下,也能做设备互联、个人云传输、跨网调用。
如果你在搜索引擎里只搜英文单词 webrpc,有时会搜到另一类项目。带上官网域名,或加上「P2P」「NAS」「无公网 IP」等词,不容易混。
Q2. 没有公网 IP,真的能用吗?
可以,这正是它主要想解决的场景之一。
家用宽带、手机热点、很多边缘设备都没有稳定公网地址。传统做法是买 IP、做端口映射,或自己维护 frp 一类隧道。webrpc 的路径是:两端各自用 Token 登录,由 SDK 负责打洞与会话;应用只关心打开会话和收发。
但也要说清楚边界:官网写明 不能保证 100% 握手成功。高延迟、严格 NAT、跨境网络策略都可能导致失败或波动。产品层仍要做超时、重试和友好提示,不要假设"任何网络都秒连"。
Q3. 和 frp 比,我该选哪个?
看你要的是「入口」还是「应用内通信」。
| frp | webrpc | |
|---|---|---|
| 模型 | 反向代理 / 隧道 | P2P 会话 + SDK API |
| 典型用法 | 把 SSH、Web 管理页透出去 | App 里 OpenSession / SendData / SendFile |
| 中继 | 常经你的公网 VPS | 优先直连 |
| 更适合 | 临时运维、暴露已有服务 | 个人云、设备 RPC、多端原生通信 |
只想 SSH 回家或打开 NAS 网页后台,frp 往往更快。
要做手机预览电脑文件、跨网 JSON 调用、多语言原生端长期在线,webrpc 更贴应用层。
两者也可以并存:运维入口继续用 frp,业务通道用 webrpc。
Q4. 和 WebRTC 比呢?能互相替代吗?
不能简单替代。
- WebRTC 强项是浏览器实时音视频,ICE/STUN/TURN 生态成熟。
- webrpc 强项是多平台 Native SDK、RPC 风格收发、无公网 IP 下的设备/个人云通信。
做会议、直播连麦,优先 WebRTC。
做「手机拉电脑上的一张图」「NAS 上跑 Go Agent、手机发指令」,优先评估 webrpc。
监控类产品里两者常可组合:画面预览走 WebRTC,控制与文件回传走 webrpc。
Q5. 和 libp2p 呢?
libp2p 更像可拼装的 P2P 网络工具箱,适合自研协议栈、基础设施型项目。学习曲线和维护面都偏大。
webrpc 更偏「应用团队明天就要收发」的 SDK 交付:登录、会话、回调、发文件,API 面比较小。独立开发者做个人 NAS 或设备互联时,通常 webrpc 路径更短;若目标本身是网络研究,再认真看 libp2p。
Q6. Token 是什么?一个 Token 对应什么?
可以把 Token 理解成 端点身份。官网常见说法是一 Token 对应一台设备(具体策略以控制台为准)。
个人档常见是约 $5 / 年 / 2 Token(以官网套餐页实时价格为准),刚好够「电脑一台 + 手机一台」或「NAS + 客户端」这种最小双端验证。
注意:
- Token 和密码不要提交到公开仓库
- A/B 两端不要填反
- 过期或复制多余空格,都会导致登录一直失败
Token、订单、续费都在 控制台 的「我的 Token / 我的订单」里管理。
Q7. 基本调用顺序是怎样的?
和语言无关,心智都差不多:

New创建客户端(传入 Token、密码)- 轮询
LoginStatus,直到非 0 GetReceivePort,在本机127.0.0.1连接回调端口- 后台线程循环读帧(数据流或文件流)
- 需要主动找对端时:
OpenSession(对端 Token) SendData发业务字节,或SendFile发文件- 退出前
Free
官网开发文档里 Go / Java / Python / C/C++ / Rust 等示例,都是这条主线的不同语言写法。
Q8. 回调端口是什么?为什么我连不上?
客户端创建成功后,SDK 会在本机开一个 TCP 回调端口 。对端发来的数据、文件,会推到这个端口;你的进程需要自己 connect 上去按帧解析。
常见踩坑:
- 把端口写死成
8080(端口是运行时分配的) - 去连局域网 IP,而不是
127.0.0.1 - 还没
GetReceivePort就开读线程 - 在回调读循环里同步做很重的发送,把后续帧堵死
帧头格式可以记成:sessionId(4字节大端) + type(1字节);type=2 数据流,type=1 文件流。细节以官网开发文档为准。
Q9. SendData 和 SendFile 分别什么时候用?
- SendData:小消息、JSON 指令、RPC 请求/响应、控制信令
- SendFile:图片、安装包、录像、备份文件等,让 SDK 按文件流推送
例如「手机预览电脑图片」:手机先 SendData("PULL|image.png"),电脑收到后对同一会话 SendFile("./image.png"),手机在文件帧回调里解码显示。
「远程查磁盘」则可以全程 SendData 传 JSON。
大文件到手机端时,注意内存:安卓上可先落盘再抽样解码,避免整图塞进内存。
Q10. LoginStatus 一直是 0,怎么查?
按这个顺序排:
- Token / 密码是否从「我的 Token」复制正确
- 是否用了当前平台、当前 CPU 架构的动态库(Mac / Linux amd64 / Linux arm64 / Android abi 别混)
- 机器网络是否可达(登录需要平台侧配合)
- 给登录加超时,避免死循环空等
语言相关细节不同:Python 还要检查 ctypes 的 argtypes;Go 要检查 CGO 链接路径;Android 要检查 jniLibs 里的 .so。
Q11. OpenSession 返回 0 是什么意思?
通常表示没能建起对端会话。常见原因:
- 对端根本没登录成功
- 填成了自己的 Token
- 网络握手失败(严格 NAT、防火墙、跨境策略等)
- 对端进程已经退出
建议:先同 Wi‑Fi / 同机两个进程验证业务逻辑,再家宽 + 4G 跨网测。跨网失败时,先确认对端在线与会话数,再怀疑业务代码。
Q12. 支持哪些平台和语言?
官网提供 Linux、Windows、macOS、Android、iOS 等 Native SDK,并有 Go、C/C++、Java、Rust、Python、PHP 等接入示例。具体以 下载 SDK / 开发文档 页面为准。
个人云常见组合:
- NAS / 小主机:Go 或 C
- 桌面:Go / Python
- 手机:Java(Android)或官网 iOS 包
通信模型一致,换语言主要是绑定方式不同(CGO、ctypes、JNA/JNI 等)。
Q13. 平台会不会存我的聊天内容或文件内容?
官网产品叙述强调:webrpc 是 P2P 通信系统,不以把用户消息内容存成平台聊天记录为产品形态;能直连时尽量直连,传输加密。
这不意味着你可以省略应用层加密与权限控制。涉密业务仍应自己做鉴权、路径白名单、审计,不要把「传输层加密」理解成「业务已经安全闭环」。
Q14. 个人试用大概多少钱?企业呢?
以官网「购买套餐」实时价格为准。公开页面上常见档位包括:
- Personal:约 $5 / 年,2 Token,宣称无限流量
- 企业档:更大 Token 包,按量级定价
Token 通常按年有效;续费规则见控制台说明。付款与开通方式若页面提示需人工,按官网联系方式处理。
Q15. 有哪些事不该用 webrpc 硬扛?
- 只想临时 SSH / 打开管理后台 → 先看 frp
- 产品就是浏览器视频会议 → 先看 WebRTC
- 要深度定制发现与路由的网络实验 → 认真评估 libp2p
- 违法用途 → 不要用;官网明确仅支持合法业务,违规可能导致封号,责任在开发者与运营者
Q16. 我想最快验证通不通,最小步骤是什么?
- 打开 https://www.webrpc.cn/ 注册,准备两个 Token
- 下载两端平台的 SDK
- 用官方任意语言示例跑通:登录 → 回调 → 一次
SendData - 再换成家宽 + 手机热点跨网测
OpenSession - 通了以后,再叠加 JSON 业务或
SendFile预览
我自己的经验是:先验证「会话与收发」,再写业务;不要一上来就把网盘功能全堆进去。
写在最后
webrpc 解决的不是「再发明一个 frp」,也不是「替换 WebRTC 开会」,而是:在无公网 IP 的现实网络里,给多端应用一条尽量直连的、RPC 风格的通信层。
如果你正卡在 Token、回调、传文件或选型问题上,希望这篇 FAQ 能少走一点弯路。更完整的 API 表与示例代码,仍以官网开发文档为准:https://www.webrpc.cn/