帮你快速理解、总结文档立即下载

内网代理(Web)

最近更新时间:2026-07-13 17:01:48

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

代理架构


代理服务器
代理链路
IM 代理
代理 IM 登录、消息收发等信令通道(WebSocket),以及聊天图片、文件等资源的上传与下载。
TRTC WebSocket 代理(如 Nginx)
代理 TRTC 进房、控制等信令通道(WebSocket),负责房间管理与用户状态同步。
TRTC TURN Server
中继转发 TRTC 音视频媒体流。
说明:
代理服务器(IM 代理、Nginx、TURN)需自行部署,搭建方式参见 TRTC Web SDK 应对防火墙受限

接口与参数

视频会议 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。

示例代码

含 UI 集成
无 UI 集成
Vue3
React
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 });
Vue3
React
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'

联系我们

如果您在接入或使用过程有任何疑问或者建议,欢迎 联系我们 提交反馈。