SDK 海外域名配置
更新时间: 2024/03/15 15:59:43
如果您的应用的服务区域为海外数据中心,您需要配置 SDK 的海外域名,以满足不同国家和地区的法律法规。
配置 IM SDK 的 link 域名和 LBS 域名
如果您的应用的服务区域为海外数据中心,为满足海外访问域名合规性,请配置海外专属域名,包括 link 域名和 LBS 域名。
海外域名地址如下表所示。
地址类型 | 海外域名 |
---|---|
link 域名 | link-sg.netease.im:7000 |
weblink 域名 | weblink01-sg.netease.im:443 |
LBS 域名 | lbs.netease.im |
-
请使用 V8.10.0 及以上版本的 IM SDK。
-
当前只有使用 S3 存储时,所有图片/文件才存储于对应的数据中心。
实现方法
初始化 SDK 时,在NIM.getInstance
中添加 LBS 和 link 域名参数的配置。示例如下:
var nim = window.SDK.NIM.getInstance({
"lbsUrl": "https://lbs.netease.im/lbs/webconf",
"defaultLink": "weblink01-sg.netease.im:443",
})
相关参数说明如下:
参数 | 类型 | 说明 |
---|---|---|
NIM.getInstance | Object |
IM 的初始化构造函数。 |
lbsUrl | String |
LBS 地址,默认为云信公网提供的链接。SDK 连接时会向 LBS 地址请求得到 Socket 连接地址。填 HTTP/HTTPS 地址。 |
defaultLink | String |
Socket 备用地址,当 LBS 请求失败时,尝试直接连接 Socket 备用地址。格式为"IP/Host:PORT"。新加坡的 weblink 默认域名是weblink01-sg.netease.im:443 。 |
初始化 SDK 时,在NIMServerSetting
中配置 LBS 和 link 域名参数,NIMServerSetting
需要开发者自己创建并注入。示例如下:
setting.lbsAddress = @"https://lbs.netease.im/lbs/conf.jsp";
setting.linkAddress = @"link-sg.netease.im:7000";
相关参数说明如下:
参数 | 类型 | 说明 |
---|---|---|
NIMServerSetting | Object |
配置云信服务器相关信息。 |
lbsAddress | String |
LBS 地址,默认为云信公网提供的链接。SDK 连接时会向 LBS 地址请求得到 Socket 连接地址。填 HTTP/HTTPS 地址。 |
linkAddress | String |
Socket 备用地址,当 LBS 请求失败时,尝试直接连接 Socket 备用地址。格式为"IP/Host:PORT"。新加坡的 link 默认域名是link-sg.netease.im:7000 。 |
初始化 SDK 时,通过SDKOptions
配置 LBS 和 link 域名相关信息。示例如下:
serverConfig.defaultLink = "link-sg.netease.im:7000";
serverConfig.lbs = "https://lbs.netease.im/lbs/conf.jsp";
serverConfig.nosUploadLbs = "http://wannos.127.net/lbs";
serverConfig.nosUploadDefaultLink = "https://nosup-hz1.127.net";
serverConfig.nosDownloadUrlFormat = "{bucket}-nosdn.netease.im/{object}";
serverConfig.nosUpload = "nosup-hz1.127.net";
serverConfig.nosSupportHttps = true;
相关参数说明如下:
参数 | 类型 | 说明 |
---|---|---|
SDKOption | Object |
可自定义的 SDK 选项,用来进行 SDK 初始化配置。 |
defaultLink | String |
IM 默认的 link 服务器地址,当 LBS 不可用时先连接该地址。格式为"IP/Host:PORT"。新加坡的 link 默认域名是link-sg.netease.im:7000 。 |
lbs | String |
IM LBS 服务器地址,通过它获取 IM link 地址信息。填 HTTP/HTTPS 地址 |
nosUploadLbs | String |
NOS 上传 LBS 服务器地址。填 HTTP/HTTPS 地址。 |
nosUploadDefaultLink | String |
NOS上传默认的 link 服务器地址,当 NOS LBS 不可用时先连接该地址。填 HTTP/HTTPS 地址。 |
nosDownloadUrlFormat | String |
NOS 下载地址拼接模板,用于拼接最终得到的下载地址。 |
nosUpload | String |
NOS 上传服务器主机地址(仅 nosSupportHttps=true 时有效,用作 HTTPS 上传时的域名校验及 http header host 字段填充)。填 Host 地址。 |
nosSupportHttps | boolean |
NOS 上传是否需要支持 HTTPS 。 |
用户需要自行创建nim_server.conf
文件,放至 SDK 的同级目录,SDK 会自动识别。nim_server.conf
文件的内容,请参考以下示例:
{
"lbs":"https://lbs.netease.im/lbs/conf.jsp",
"lbs.backup":[
"https://lbs.netease.im/lbs/conf.jsp"
],
"link":"link-sg.netease.im:7000",
"nos_lbs":"https://wanproxy.127.net/lbs?version=1.0",
"nos_uploader":"http://nosup-hz1.127.net",
"nos_uploader_host":"nosup-hz1.127.net",
"nos_downloader":"{bucket}.nosdn.127.net/{object}",
"https_enabled":true
}
在使用前,请先校验 json 格式是否正确。
初始化 SDK 时,添加 LBS 和长连接域名参数的配置。
-
含圈组版 Web
new NIM({ "lbsUrls": ["https://lbs.netease.im/lbs/webconf"], "linkUrl": "weblink01-sg.netease.im:443" })
-
uni-app/小程序
getInstance({ "lbsUrls": ["https://lbs.netease.im/lbs/webconf"], "linkUrl": "weblink01-sg.netease.im:443" })
相关参数说明如下:
参数 | 类型 | 说明 |
---|---|---|
NIMInitializeOptions | Object |
IM 的初始化构造函数。 |
lbsUrls | String |
LBS 地址,默认为云信公网提供的链接。SDK 连接时会向 LBS 地址请求得到 Socket 连接地址。填 HTTP/HTTPS 地址。 |
linkUrl | String |
Socket 备用地址,当 LBS 请求失败时,尝试直接连接 Socket 备用地址。格式为"IP/Host:PORT"。新加坡的 weblink 默认域名是weblink01-sg.netease.im:443 。 |
初始化 SDK 时,通过 NIMServerConfig
配置 LBS 和 link 域名相关信息。示例如下:
NIMServerConfig config = NIMServerConfig(
defaultLink: "link-sg.netease.im:7000",
lbs: "https://lbs.netease.im/lbs/conf.jsp",
nosUploadLbs: "http://wannos.127.net/lbs",
nosUploadDefaultLink: "https://nosup-hz1.127.net",
nosDownloadUrlFormat: "{bucket}-nosdn.netease.im/{object}",
nosUpload: "nosup-hz1.127.net",
nosSupportHttps: true);
if (Platform.isAndroid) {
final directory = await getExternalStorageDirectory();
options = NIMAndroidSDKOptions(
appKey: appKey,
shouldSyncStickTopSessionInfos: true,
serverConfig: config,
sdkRootDir:
directory != null ? '${directory.path}/NIMFlutter' : null);
} else if (Platform.isIOS) {
final directory = await getApplicationDocumentsDirectory();
options = NIMIOSSDKOptions(
appKey: appKey,
shouldSyncStickTopSessionInfos: true,
sdkRootDir: '${directory.path}/NIMFlutter',
apnsCername: 'ENTERPRISE',
serverConfig: config,
pkCername: 'DEMO_PUSH_KIT',
);
}
相关参数说明如下:
参数 | 类型 | 说明 |
---|---|---|
NIMServerConfig | Object |
配置专属服务器的地址。 |
defaultLink | String |
IM 默认的 link 服务器地址,当 LBS 不可用时先连接该地址。格式为"IP/Host:PORT"。新加坡的 link 默认域名是link-sg.netease.im:7000 。 |
lbs | String |
IM LBS 服务器地址,通过它获取 IM link 地址信息。填 HTTP/HTTPS 地址。 |
nosUploadLbs | String |
NOS 上传 LBS 服务器地址。填 HTTP/HTTPS 地址。 |
nosUploadDefaultLink | String |
NOS上传默认的 link 服务器地址,当 NOS LBS 不可用时先连接该地址。填 HTTP/HTTPS 地址。 |
nosDownloadUrlFormat | String |
NOS 下载地址拼接模板,用于拼接最终得到的下载地址。 |
nosUpload | String |
NOS 上传服务器主机地址(仅 nosSupportHttps=true 时有效,用作 HTTPS 上传时的域名校验及 http header host 字段填充)。填 Host 地址。 |
nosSupportHttps | boolean |
NOS 上传是否需要支持 HTTPS 。 |
目前仅支持 Android 和 iOS 平台。
:::
限定 RTC SDK 的 访问区域
为满足客户在海外访问域名合规性,云信支持访问区域限制功能。您可以在初始化 RTC SDK 时, 指定访问区域。
请集成 V5.5.10 及以上版本的 RTC SDK,以便更好地限制访问区域。
技术原理
开启限定访问区域功能后,无论用户身处何地使用 App,SDK 都只会访问指定区域的域名。例如,设置访问区域为除中国大陆以外的全球区域时,有 3 个来自不同国家的用户访问App,SDK将会访问海外的域名。
指定的访问区域 | App 用户所在区域 | SDK 实际访问的区域 | 连接后的用户体验 |
---|---|---|---|
除中国大陆以外的全球区域 | 马来西亚 | 海外的域名 | 正常 |
印尼 | 正常 | ||
中国 | 可能受影响 |
由于指定区域与用户所在区域之间存在跨区域公共互联网,当网络质量较差时,可能会影响音视频体验。
当前 RTC SDK 支持配置的区域包括:
- 中国大陆
- 除中国大陆以外的全球区域
实现方法
在初始化 RTC SDK 时,通过设置 NERtcOption
中的 areaCodeType
参数,指定访问区域。
NERtcAreaCodeType
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
中国大陆 | AREA_CODE_TYPE_CN |
除中国大陆以外的全球区域 | AREA_CODE_TYPE_OVERSEA_DEFAULT |
(默认)不指定区域 | AREA_CODE_TYPE_DEFAULT |
示例代码如下:
javaNERtcOption option = new NERtcOption();
// 指定海外
option.areaCodeType = NERtcConstants.NERtcAreaCodeType.AREA_CODE_TYPE_OVERSEA_DEFAULT;
// 其他初始化配置
option.xxx = xxx;
// 初始化SDK
NERtcEx.getInstance().init(mActivity, appKey, callback, option);
调用 SetUpEngineWithContext
接口创建 RTC 实例时,通过 NERtcAreaCodeType
参数指定访问区域。
NERtcAreaCodeType
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
中国大陆 | AREA_CODE_TYPE_CN |
除中国大陆以外的全球区域 | AREA_CODE_TYPE_OVERSEA_DEFAULT |
(默认)不指定区域 | AREA_CODE_TYPE_DEFAULT |
示例代码如下:
objective-cNERtcEngineContext *context = [[NERtcEngineContext alloc] init];
context.appkey = 填写appkey;
context.areaCodeType = 填写areaCode;
//context其他设置
[[NERtcEngine sharedEngine] setupEngineWithContext:context];
调用 Initialize 接口初始化 RTC SDK 时,通过设置 NERtcEngineContext 中的 area_code_type 参数,指定访问区域。
NERtcAreaCodeType
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
中国大陆 | AREA_CODE_TYPE_CN |
除中国大陆以外的全球区域 | AREA_CODE_TYPE_OVERSEA_DEFAULT |
(默认)不指定区域 | AREA_CODE_TYPE_DEFAULT |
示例代码如下:
c++NERtcEngineContext rtc_engine_context_;
IRtcEngineEx *rtc_engine_ = (IRtcEngineEx *)createNERtcEngine();
if (rtc_engine_ == nullptr) {
NRTC_LOG_ERROR("Failed to createNERtcEngine\n");
return;
}
rtc_engine_context_.app_key = app_key_.c_str();//填写appkey
rtc_engine_context_.log_dir_path = log_dir_path_.c_str();//填写日志目录
rtc_engine_context_.log_level = kNERtcLogLevelInfo;
rtc_engine_context_.log_file_max_size_KBytes = 0;
rtc_engine_context_.event_handler = this;//设置一个回调监听对象,需要声明周期大于SDK引擎
rtc_engine_context_.area_code_type = kNERtcAreaCodeTypeOverseaDefault;//设置除中国大陆以外的全球区域
if (kNERtcNoError != rtc_engine_->initialize(rtc_engine_context_)) {
NRTC_LOG_ERROR("Failed to initialize NERtc Engine\n");
rtc_engine_->release(true);
destroyNERtcEngine((void *&)rtc_engine_);
return;
}
在初始化 RTC Web SDK 时,通过设置 NERTC.setArea() 方法中的 areaCode
参数指定访问区域。
areaCode
参数的枚举如下表所示。
地区 | 枚举值 |
---|---|
除中国大陆以外的全球区域 | OVERSEAS |
(默认)不指定区域 | GLOBAL |
示例代码如下:
typescript // 在创建客户端之前,设置访问区域为海外。不调用该接口表示中国大陆。
NERTC.setArea({areaCode: 'OVERSEAS'})
//初始化SDK实例
const client = NERTC.createClient(...)