大型企业、医院、高校、银行等安全需求较高的机构会部署防火墙将办公环境与外网隔离开来,保护内部信息安全。
为避免这些企业用户因防火墙无法使用 Agora 的服务,Agora 提供云代理服务。
Agora 云代理的工作原理如下:
自 Web SDK v4.3.0 起,Agora 优化了云代理架构,进一步加强了有网络访问限制的环境中 SDK 的连通性,同时支持限定访问区域。如果你使用的是 Web SDK v4.3.0 或以上版本,参考以下步骤使用云代理服务:
联系 sales@agora.io 或技术支持申请开通云代理服务,并提供以下信息:
成功开通后,在加入频道前调用 startProxyServer
方法打开云代理功能,并将 mode
参数设为 3
,然后测试是否能正常实现音视频通话或直播。
自 4.4.0 起,SDK 提供 client.on("is-using-cloud-proxy")
事件。SDK 会在本地成功发布媒体流后触发该回调,提示当前媒体流是否经云代理服务转发。
const client = AgoraRTC.createClient({mode: 'live',codec: 'vp8'});
// 开启云代理
client.startProxyServer(3);
// 加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
如果需要关闭代理,请在离开频道后调用 stopProxyServer
。
// 开启云代理并加入频道后
/** ... **/
// 离开频道
client.leave();
// 关闭云代理服务
client.stopProxyServer();
// 重新加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
如果你使用的是 Web SDK v4.0.0 至 v4.2.1,参考以下步骤使用云代理服务:
联系 sales@agora.io 或技术支持申请开通云代理服务,并提供以下信息:
将以下测试 IP 及端口添加到企业防火墙的白名单。
源地址为集成了 Web SDK 的客户端。
国内测试
协议 | 目标地址 | 端口 | 端口用途 |
---|---|---|---|
TCP | 150.138.153.78 | 443, 4000 3433 - 3460 |
消息数据传输 媒体数据交换 |
TCP | 47.74.211.17 | 443 | 边缘节点通信 |
TCP | 52.80.192.229 | 443 | 边缘节点通信 |
TCP | 52.52.84.170 | 443 | 边缘节点通信 |
TCP | 47.96.234.219 | 443 | 边缘节点通信 |
UDP | 150.138.153.78 | 3478 - 3500 | 媒体数据交换 |
国外测试
协议 | 目标地址 | 端口 | 端口用途 |
---|---|---|---|
TCP | 23.236.115.138 | 443, 4000 3433 - 3460 |
消息数据传输 媒体数据交换 |
TCP | 148.153.66.218 | 443, 4000 3433 - 3460 |
消息数据传输 媒体数据交换 |
TCP | 47.74.211.17 | 443 | 边缘节点通信 |
TCP | 52.80.192.229 | 443 | 边缘节点通信 |
TCP | 52.52.84.170 | 443 | 边缘节点通信 |
TCP | 47.96.234.219 | 443 | 边缘节点通信 |
UDP | 23.236.115.138 | 3478 - 3500 | 媒体数据交换 |
UDP | 148.153.66.218 | 3478 - 3500 | 媒体数据交换 |
在加入频道前调用 startProxyServer
方法打开云代理功能,测试是否能正常实现音视频通话或直播。
const client = AgoraRTC.createClient({mode: 'live',codec: 'vp8'});
// 开启云代理
client.startProxyServer();
// 加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
测试完成后,Agora 会为你部署云代理服务正式环境,并提供相应的 IP 和端口。你需要将 Agora 提供的 IP 和端口添加到企业防火墙的白名单。
如果需要关闭云代理,请在离开频道后调用 stopProxyServer
。
// 开启云代理并加入频道后
/** ... **/
// 离开频道
client.leave();
// 关闭云代理服务
client.stopProxyServer();
// 重新加入频道
client.join("<YOUR TOKEN>", "<YOUR CHANNEL>").then(() => {
/** ... **/
});
startProxyServer
必须在加入频道前调用,stopProxyServer
必须在离开频道后调用。