io.agora.fpa.proxy
Package 主要包含以下类和接口。
FpaProxyService
类包含以下方法。
public static synchronized FpaProxyService getInstance()
获取 FpaProxyService
对象。
FpaProxyService
对象。
public int start(@NonNull FpaProxyServiceConfig config) throws Exception
开启 FPA 服务。
参数 | 说明 |
---|---|
config | FPA 服务配置。详见 FpaProxyServiceConfig 。 |
返回值 | 说明 |
---|---|
0 | 开启服务成功。 |
<0 | 开启服务失败,并抛出 exception。 |
RuntimeException("must have a config instance")
:config 参数为 null。RuntimeException("appId and token not empty")
:FpaProxyServiceConfig
中的 appId 和 token 参数不能为空。RuntimeException("start service failed")
:开启 FPA 服务失败。public void stop()
关闭 FPA 服务。
无
无
public synchronized void setListener(IFpaServiceListener listener)
注册 FPA 服务事件监听。
参数 | 说明 |
---|---|
listener | IFpaServiceListener 对象。 |
无
public int setOrUpdateHttpProxyChainConfig(@NonNull FpaHttpProxyChainConfig config)
设置或更新 HTTP 本地代理的加速 IP/域名和对应的 chain ID 映射列表。
参数 | 说明 |
---|---|
config | 加速 IP/域名和对应的 chain ID 映射列表。详见 FpaHttpProxyChainConfig 。 |
返回值 | 说明 |
---|---|
0 | 调用成功。 |
< 0 | 调用失败。详见 错误码。 |
public int setParameters(String param)
通过 JSON 配置 SDK 提供技术预览或特别定制功能。
JSON 选项默认不公开。
参数 | 说明 |
---|---|
param | JSON 字符串形式的参数。 |
返回值 | 说明 |
---|---|
0 | 调用成功。 |
< 0 | 调用失败。 |
public int getHttpProxyPort()
获取当前使用的 HTTP 本地代理端口。
无
返回值 | 说明 |
---|---|
> 0 | 当前使用的 HTTP 本地代理端口。 |
< 0 | 调用失败。详见 错误码。 |
public int getTransparentProxyPort(FpaChainInfo info)
获取当前使用的透明代理端口。
参数 | 说明 |
---|---|
info | 加速通道相关信息。详见 FpaChainInfo 。 |
返回值 | 说明 |
---|---|
> 0 | 当前使用的 TCP 透明代理端口。 |
< 0 | 调用失败。详见 错误码。 |
public FpaProxyServiceDiagnosisInfo getDiagnosisInfo()
获取问题诊断用的信息。
无
FpaProxyServiceDiagnosisInfo
对象。
public static String getSdkVersion()
获取 SDK 的版本号。
无
SDK 的版本号。
public static String getSdkBuildInfo()
获取 SDK 的 build 信息。
无
SDK 的 build 信息。
FpaProxyServiceConfig
类包含以下类。
Builder
类包含以下方法。
Builder
public Builder(@NonNull String logFile)
Builder 类的构造方法。
参数 | 说明 |
---|---|
logFile | String 型。日志文件的完整路径,包括文件名。请确保你指定的目录存在而且可写。 |
Builder
对象。
build
FpaProxyServiceConfig
类构造方法。
public FpaProxyServiceConfig build()
无
FpaProxyServiceConfig
对象。
setAppId
public Builder setAppId(String id)
设置 App ID。
参数 | 说明 |
---|---|
id | 声网为 app 开发者签发的 App ID,详见 获取 App ID。 |
Builder
对象。
setToken
public Builder setToken(String token)
设置 Token。
参数 | 说明 |
---|---|
token | 在 app 服务器端生成的用于鉴权的 Token。如果你的项目使用 App ID 鉴权,你可以将 token 参数赋值为 App ID 的值,自 1.0.0 起也可以赋值为 null 、"" 或不填该参数;如果你使用 App ID + Token 鉴权,则需要传入你在 App 服务端生成的 Token。 |
Builder
对象。
setLogLevel
public Builder setLogLevel(LogLevel level)
设置日志等级。
参数 | 说明 |
---|---|
level | 日志级别。
LogLevel 。 |
Builder
对象。
setLogFileSizeKb
public Builder setLogFileSizeKb(int size)
设置日志文件大小。
参数 | 说明 |
---|---|
size | 单个日志文件的大小,单位为 KB。默认值为 1024 KB。如果你将该参数设为 1024 KB,SDK 会最多输出总计 5 MB 的日志文件。如果你将该参数设为小于 1024 KB,设置不生效,单个日志文件最大仍为 1024 KB。 |
Builder
对象。
FpaHttpProxyChainConfig
类包含以下类。
Builder
类包含以下方法。
Builder
public Builder()
Builder 类的构造方法。
无
Builder
对象。
addChainInfo
public Builder addChainInfo(int chainId, String address, int port, boolean enableFallback, boolean enableCrypto, String[] userCas, String verifyHost)
为加速链路添加目标 IP/域名与 chain ID 的映射关系。
参数 | 说明 |
---|---|
chainId | 加速通道的 chain ID。 |
address | 目标 源站 的 IP 或域名。在链路加密加速模式回退场景下,该参数为你期望回退的域名。 |
port | 目标 源站 的端口。在链路加密加速模式回退场景下,该参数为你期望回退的端口。 |
enable | 对于此加速通道,FPA 连接失败时是否回退到本地连接。
|
enableCrypto | 如果设置 enable 开启连接失败回退,SDK 是否回退到加密连接。
|
userCas | 与目标 IP 进行 SSL 连接所需的一个或多个 CA 根证书。你需要将应用中的 .pem 格式 CA 根证书文件文本内容传入该参数。如果 CA 证书不是 .pem 格式,你需要先转换为 .pem 格式。该参数仅在 enableCrypto 为 true 时生效。获取方式详见获取 CA 根证书。 |
verifyHost | 用于远程校验的主机名。你可以填 null 忽略主机名校验。该参数仅在 enableCrypto 为 true 时生效。 |
fallbackWhenNoChainAvailable
public Builder fallbackWhenNoChainAvailable(boolean can)
对于 HTTP 本地代理,在 SDK 找不到 源站 对应的 chain ID 时是否回退到本地连接。
参数 | 说明 |
---|---|
can |
|
build
public FpaHttpProxyChainConfig build()
FpaHttpProxyChainConfig
类的构造方法。
FpaHttpProxyChainConfig
对象。
加速链路的相关信息。
public FpaChainInfo(int chain_id, String address, int port, boolean enable, boolean enableCrypto, String[] userCas, String verifyHost)
为加速链路添加目标 IP/域名与 chain ID 的映射关系。
参数 | 说明 |
---|---|
chainId | 加速通道的 chain ID。 |
address | 目标 源站 的 IP 或域名。在链路加密加速模式回退场景下,该参数为你期望回退的域名。 |
port | 目标 源站 的端口。在链路加密加速模式回退场景下,该参数为你期望回退的端口。 |
enable | 对于此加速通道,FPA 连接失败时是否回退到本地连接。
|
enableCrypto | 如果设置 enable 开启连接失败回退,SDK 是否回退到加密连接。
|
userCas | 与目标 IP 进行 SSL 连接所需的一个或多个 CA 根证书。你需要将应用中的 .pem 格式 CA 根证书文件文本内容传入该参数。如果 CA 证书不是 .pem 格式,你需要先转换为 .pem 格式。该参数仅在 enableCrypto 为 true 时生效。获取方式详见获取 CA 根证书。 |
verifyHost | 用于远程校验的主机名。你可以填 null 忽略主机名校验。该参数仅在 enableCrypto 为 true 时生效。 |
FpaChainInfo
对象。
FPA 代理连接的相关信息。包含以下成员参数。
参数 | 类型 | 说明 |
---|---|---|
dst_ip_or_domain | String | 目标 源站 的 IP 或域名。 |
proxy_type | String | 代理类型。
|
connection_id | String | 连接 ID。每个 ID 代表 SDK 通过 FPA 代理与目标 源站 的一次完整连接。 |
dest_port | int | 目标 源站 的端口。 |
local_port | int | 本地代理的端口。 |
FpaProxyServiceDiagnosisInfo
类包含以下参数。
参数 | 类型 | 说明 |
---|---|---|
installId | String | 与运行集成 SDK 的 app 的设备唯一对应的 ID。如果你清除了 app 缓存数据,installId 会更新。声网建议你在本地或自己的数据中心留存 installid。在你联系声网技术支持时,可以提供此 installid,方便声网技术支持准确查询日志。 |
instanceId | String | 与当前 FpaProxyService 实例唯一对应的 ID。 |
IFpaServiceListener
接口包含以下回调。
default void onConnected(@Nullable FpaProxyConnectionInfo info) {
}
在成功连接 FPA 代理时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
default void onAccelerationSuccess(@Nullable FpaProxyConnectionInfo info) {
}
在 FPA 代理加速成功时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
default void onConnectionFailed(@Nullable FpaProxyConnectionInfo info, FailedReason reason) {
}
在连接 FPA 代理失败且连接未回退时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FailedReason 枚举。 |
default void onDisconnectedAndFallback(@Nullable FpaProxyConnectionInfo info, FailedReason reason) {
}
在连接 FPA 代理失败且回退至本地连接时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FailedReason 枚举。 |
SDK 返回的同步错误码。
参数 | 说明 |
---|---|
FpaServiceErrorOK |
0:没有错误。 |
FpaServiceErrorInvalidArgument |
-1:参数无效。请检查你是否使用了正确的参数。 |
FpaServiceErrorNoMemory |
-2:无法为对象分配内存。 |
FpaServiceErrorNotInitialized |
-3:FPA 服务没有初始化。请确保你成功进行了初始化。 |
FpaServiceErrorCoreInitializeFailed |
-4:FPA 服务初始化失败。 |
FpaServiceErrorUnableBindSocketPort |
-5:无法绑定 SDK 内部的 socket 端口。 |
SDK 回调返回的失败原因。
参数 | 说明 |
---|---|
FPA_FAILED_REASON_DNS_QUERY |
-101:DNS 解析错误。 |
FPA_FAILED_REASON_SOCKET_CREATE |
-102:SDK 内部创建 socket 失败。 |
FPA_FAILED_REASON_SOCKET_CONNECT |
-103:SDK 内部连接 socket 失败。 |
FPA_FAILED_REASON_CONNECT_TIMEOUT |
-104:连接远端服务器超时。 |
FPA_FAILED_REASON_NO_CHAIN_ID_MATCH |
-105:找不到 chain ID。请检查是否设置了正确的 chain ID。 |
FPA_FAILED_REASON_DATA_READ |
-106:读取数据失败。 |
FPA_FAILED_REASON_DATA_WRITE |
-107:写入数据失败。 |
FPA_FAILED_REASON_TOO_FREQUENTLY |
-108:每秒并发连接数超出 100 条的限制。 |
FPA_FAILED_REASON_TOO_MANY_CONNECTIONS |
-109:当前存在的活跃连接数超出 1000 条的限制。 |
输出的日志级别。
参数 | 说明 |
---|---|
LOG_NO_LOG |
0:没有日志。 |
LOG_INFO |
1:Information 级别。 |
LOG_WARNING |
2:Warning 级别。 |
LOG_ERROR |
4:Error 级别。 |
LOG_FATAL |
8:Fatal 级别。 |