F2F 是一个面向局域网和可直连网络的轻量级点对点视频通话工具。
F2F 支持 Web 端和 Android 端。输入对方的 IPv4 或 IPv6 地址后,对方会显示来电确认;同意后,音视频由 WebRTC 点对点传输。
.
├── public/ # Web 前端页面
├── server.js # Web 服务和跨设备信令服务
├── test/ # Node.js 测试
└── android/ # Android 原生应用
Android 应用的安装、构建和运行说明见 android/README.md。
需要 Node.js 18+ 和系统中的 openssl。
npm start首次启动会在 .cert/ 自动生成本地 HTTPS 证书。浏览器打开:
https://localhost:8787
局域网内其他设备访问:
https://<该设备的IP>:8787
由于使用自签名证书,浏览器第一次访问时会显示安全提示。网页端需要先确认继续访问,并保持页面打开以接收来电。
8787/TCP:Web 页面服务。8788/TCP:设备间信令,交换来电、SDP、接听和挂断消息。19302/UDP:默认 STUN 服务器。- 动态 UDP 端口:WebRTC 实际音视频传输。
音视频不会经过 8787 或 8788。
可通过环境变量修改监听地址和端口:
HOST=0.0.0.0 PORT=9000 SIGNAL_PORT=9001 npm start所有互通设备的信令端口必须一致。Android 应用默认使用信令端口 8788。
仅调试页面时,可在 localhost 上使用 HTTP 模式:
HTTP=1 npm start除 localhost 外,浏览器通常会在 HTTP 页面禁用摄像头和麦克风,因此实际通话请使用默认 HTTPS 模式。
- 输入的地址必须能从呼叫方直接访问;IPv4 和 IPv6 均支持。
- 防火墙需要允许 TCP
8788入站,并允许 WebRTC 动态 UDP 流量。 - 跨公网或严格 NAT 环境可能需要 TURN 服务。当前默认配置使用公共 STUN,局域网直连不依赖 TURN。
- 视频默认优先使用 1080p、30fps,网络或摄像头能力不足时会自动降低画质。
npm test