视频会议 SDK 基于腾讯云即时通信 IM 与实时音视频 TRTC 提供服务,支持在内网 / 防火墙环境下统一配置 IM 与 TRTC 代理,适用于私有化部署、企业内网隔离等无法直连腾讯云服务的场景。
代理架构

代理服务器 | 代理链路 |
IM 代理 | 代理 IM 登录、消息收发等信令通道(WebSocket),以及聊天图片、文件等资源的上传与下载。 |
TRTC WebSocket 代理(如 Nginx) | 代理 TRTC 进房、控制等信令通道(WebSocket),负责房间管理与用户状态同步。 |
TRTC TURN Server | 中继转发 TRTC 音视频媒体流。 |
说明:
接口与参数
视频会议 SDK 支持用户在调用
login() 之前通过 callExperimentalAPI 接口统一配置内网代理:callExperimentalAPI({api: 'setNetworkProxy',params: {im?: { /* IM 代理参数 */ },rtc?: { /* TRTC 代理参数 */ },},});
IM 代理参数
参数 | 类型 | 说明 |
proxyServer | String | IM 信令 WebSocket 代理地址。 |
fileUploadProxy | String | IM 文件上传代理地址。 |
fileDownloadProxy | String | IM 文件下载代理地址。 |
TRTC 代理参数
参数 | 类型 | 说明 |
websocketProxy | String | TRTC 信令 WebSocket 代理地址,如 wss://proxy.example.com/ws/。 |
turnServer | Array | TURN 服务器列表,每项含 url / username / credential。 |
iceTransportPolicy | 'relay' | 'all' | 客户端 ICE 传输策略;内网环境建议设为 'relay',强制连接 TURN server。 |
示例代码
import { conference } from '@tencentcloud/roomkit-web-vue3';conference.callExperimentalAPI({api: 'setNetworkProxy',params: {im: {proxyServer: 'wss://proxy.example.com:8080',fileUploadProxy: 'https://proxy.example.com:8080',fileDownloadProxy: 'https://proxy.example.com:8080',},rtc: {websocketProxy: 'wss://proxy.example.com/ws/',turnServer: [{ url: '14.3.3.3:3478', username: 'turn', credential: 'turn' },],iceTransportPolicy: 'relay',},},});await conference.login({ sdkAppId, userId, userSig });await conference.createAndJoinRoom({ roomId });
import { conference } from '@tencentcloud/roomkit-web-react';conference.callExperimentalAPI({api: 'setNetworkProxy',params: {im: {proxyServer: 'wss://proxy.example.com:8080',fileUploadProxy: 'https://proxy.example.com:8080',fileDownloadProxy: 'https://proxy.example.com:8080',},rtc: {websocketProxy: 'wss://proxy.example.com/ws/',turnServer: [{ url: '14.3.3.3:3478', username: 'turn', credential: 'turn' },],iceTransportPolicy: 'relay',},},});await conference.login({ sdkAppId, userId, userSig });await conference.createAndJoinRoom({ roomId });
import { callExperimentalAPI } from 'tuikit-atomicx-vue3';import { useLoginState, useRoomState } from 'tuikit-atomicx-vue3/room';callExperimentalAPI({api: 'setNetworkProxy',params: {im: {proxyServer: 'wss://proxy.example.com:8080',fileUploadProxy: 'https://proxy.example.com:8080',fileDownloadProxy: 'https://proxy.example.com:8080',},rtc: {websocketProxy: 'wss://proxy.example.com/ws/',turnServer: [{ url: '14.3.3.3:3478', username: 'turn', credential: 'turn' },],iceTransportPolicy: 'relay',},},});const { login } = useLoginState();await login({ sdkAppId, userId, userSig });const { createAndJoinRoom } = useRoomState();await createAndJoinRoom({ roomId });
import { callExperimentalAPI } from 'tuikit-atomicx-react';import { useLoginState, useRoomState } from 'tuikit-atomicx-react/room';callExperimentalAPI({api: 'setNetworkProxy',params: {im: {proxyServer: 'wss://proxy.example.com:8080',fileUploadProxy: 'https://proxy.example.com:8080',fileDownloadProxy: 'https://proxy.example.com:8080',},rtc: {websocketProxy: 'wss://proxy.example.com/ws/',turnServer: [{ url: '14.3.3.3:3478', username: 'turn', credential: 'turn' },],iceTransportPolicy: 'relay',},},});const { login } = useLoginState();await login({ sdkAppId, userId, userSig });const { createAndJoinRoom } = useRoomState();await createAndJoinRoom({ roomId });
常见问题
用户在外网正常进会,但是内网无法进会?
检查是否在
login() 前调用了 setNetworkProxy;若已配置仍失败,排查 TURN 端口与代理服务器出站白名单。用户能进会但看不到远端画面、听不到远端声音?
确认
turnServer 可达,内网环境将 iceTransportPolicy 设为 'relay'。