SDK 海外域名配置

更新时间: 2024/03/15 15:59:43

如果您的应用的服务区域为海外数据中心,您需要配置 SDK 的海外域名,以满足不同国家和地区的法律法规。

如果您的应用的服务区域为海外数据中心,为满足海外访问域名合规性,请配置海外专属域名,包括 link 域名和 LBS 域名。

海外域名地址如下表所示。

地址类型 海外域名
link 域名 link-sg.netease.im:7000
weblink 域名 weblink01-sg.netease.im:443
LBS 域名 lbs.netease.im
  • 请使用 V8.10.0 及以上版本的 IM SDK。

  • 当前只有使用 S3 存储时,所有图片/文件才存储于对应的数据中心。

实现方法

Web

初始化 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
iOS

初始化 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
Android

初始化 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 。
PC 端

用户需要自行创建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 格式是否正确。

含圈组版 Web / uni-app / 小程序

初始化 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
Flutter

初始化 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 支持配置的区域包括:

  • 中国大陆
  • 除中国大陆以外的全球区域

实现方法

Android

在初始化 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);
iOS

调用 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];
Windows / macOS

调用 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;
}
Web

在初始化 RTC Web SDK 时,通过设置 NERTC.setArea() 方法中的 areaCode 参数指定访问区域。

areaCode 参数的枚举如下表所示。

地区 枚举值
除中国大陆以外的全球区域 OVERSEAS
(默认)不指定区域 GLOBAL

示例代码如下:

typescript  // 在创建客户端之前,设置访问区域为海外。不调用该接口表示中国大陆。
  NERTC.setArea({areaCode: 'OVERSEAS'})
  //初始化SDK实例
  const client = NERTC.createClient(...)

此文档是否对你有帮助?
有帮助
去反馈
  • 配置 IM SDK 的 link 域名和 LBS 域名
  • 实现方法
  • 限定 RTC SDK 的 访问区域
  • 技术原理
  • 实现方法