Skip to content

快速开始 ​

1:1 通话只需要信令服务器,再加上两个进入同一房间的客户端。多人通话还需要 SFU 服务器,见多人通话。

环境要求 ​

运行需要
信令服务器、Web 客户端Node.js 20.19 或更高版本(Vite 7 的要求)
AndroidAndroid Studio 和 JDK 17+,一台 Android 7.0(API 24)或更高版本的设备
iOS、macOSXcode 26。iOS 应用需要运行 iOS 26 的 iPhone,Mac 应用需要 macOS 26(Liquid Glass 需要 26 系列版本)。依赖通过 Swift Package Manager 获取。
WindowsWindows 10 1809 或更高版本(Mica 需要 Windows 11),Visual Studio 2026,并安装 WinUI application development 和 Desktop development with C++ 工作负载
多人通话Go 1.25 或更高版本

1. 启动信令服务器 ​

sh
cd signaling-server
npm install
npm run dev

启动后会打印出客户端应该使用的地址:

Signaling server listening on port 4000
Network access via: 192.168.1.10:4000

这个服务器就是一个普通的 WebSocket 中继,地址是 ws://<address>/ws。想换端口可以设置 PORT。

2. 启动两个客户端 ​

任意两个都行,不必是同一个平台。

sh
cd web
npm install
npm run dev
# 在两个浏览器窗口中打开 http://localhost:5173
sh
# 在 Android Studio 中打开 android/,运行 "app" 配置,
# 或者在终端中安装:
cd android
./gradlew :app:installDebug
sh
open ios/WebRTCDemo.xcodeproj
# 选择 WebRTCDemo scheme,在真机 iPhone 上运行。
# 摄像头和屏幕共享都需要真实硬件。
sh
open ios/WebRTCDemo.xcodeproj
# 选择 WebRTCDemoMac scheme 和 "My Mac" 运行目标。
powershell
cd windows
# 下载 libwebrtc(校验 SHA-256)并构建 rtc_shim.dll
./native/RtcShim/scripts/build-shim.ps1
dotnet run --project src/WebRtcDemo.App -p:Platform=x64

在 iOS 和 macOS 上,第一次打开工程时 Xcode 会自动解析 WebRTC 的 Swift package。不需要 CocoaPods,也没有 workspace。在 Windows 上,也可以用 Visual Studio 打开 windows/WebRtcDemo.slnx,运行 x64 或 ARM64 配置。

3. 让客户端连接服务器 ​

地址设置一次之后,各客户端都会记住。

客户端在哪里修改默认值
Web点击 Join room 下方的服务器地址提供页面的主机上的 4000 端口
Android点击大厅底部的服务器地址strings.xml 中的 serverAddress
iOS点击大厅底部的服务器地址SignalingServer.swift 中的 SignalingServer.defaultURL
macOSWebRTC Demo › Settings…(⌘,)http://localhost:4000
Windows大厅中的 Signaling serverhttp://localhost:4000

手机访问不到你电脑上的 localhost。请填写服务器打印出的局域网地址,并确保手机和电脑连在同一个网络中。

4. 加入同一个房间 ​

在两个客户端上输入同一个房间 ID 并加入。先加入的一方等待,后加入的一方发起通话。

如果想试试端到端加密,请在加入之前,在双方的大厅里都打开 E2EE。如果只有一方打开,另一方会看到黑屏,也听不到声音。

不会自动重连

整个通话期间,客户端都会保持信令 socket 处于打开状态。一旦它断开(服务器停止、Wi-Fi 切换到 4G),即使音视频还在正常传输,通话也会结束,并提示 "Lost the connection to the signaling server"。重新加入房间即可。

下一步 ​