agora_fpa_service
package 主要包含以下成员。
FpaProxyService
接口类包含以下方法。
static FpaProxyService get instance => FpaProxyServiceImpl.instance;
获取 FpaProxyService
对象。
FpaProxyService
对象。
void start(FpaProxyServiceConfig config);
开启 FPA 服务。
参数 | 说明 |
---|---|
config | FPA 服务配置。详见 FpaProxyServiceConfig 。 |
无
调用失败会抛出 exception 并返回 FpaProxyServiceException
对象。详见 FpaProxyServiceException
类。
void stop();
关闭 FPA 服务。
无
无
void setObserver(FpaProxyServiceObserver observer);
注册 FPA 服务事件监听 observer。
参数 | 说明 |
---|---|
observer | FpaProxyServiceObserver 对象。 |
无
void setOrUpdateHttpProxyChainConfig(FpaHttpProxyChainConfig config);
设置或更新 HTTP 本地代理的加速 IP/域名和对应的 chain ID 映射列表。
参数 | 说明 |
---|---|
config | 加速 IP/域名和对应的 chain ID 映射列表。详见 FpaHttpProxyChainConfig 。 |
无
void setParameters(String params);
通过 JSON 配置 SDK 提供技术预览或特别定制功能。
JSON 选项默认不公开。
参数 | 说明 |
---|---|
param | JSON 字符串形式的参数。 |
无
int getHttpProxyPort();
获取当前使用的 HTTP 本地代理端口。
无
返回值 | 说明 |
---|---|
> 0 | 当前使用的 HTTP 本地代理端口。 |
<= 0 | 调用失败。详见 FPA 错误码。 |
int getTransparentProxyPort(FpaChainInfo info);
获取当前使用的透明代理端口。
参数 | 说明 |
---|---|
info | 加速通道相关信息。详见 FpaChainInfo 。 |
返回值 | 说明 |
---|---|
> 0 | 当前使用的 TCP 透明代理端口。 |
<= 0 | 调用失败。详见 FPA 错误码。 |
FpaProxyServiceDiagnosisInfo getDiagnosisInfo();
获取问题诊断用的信息。
无
FpaProxyServiceDiagnosisInfo
对象。
static String getSDKVersion()
获取 SDK 的版本号。
无
SDK 的版本号。
static String getBuildInfo()
获取 SDK 的 build 信息。
无
SDK 的 build 信息。
FpaProxyServiceConfig
类包含以下成员。
class FpaProxyServiceConfig {
FpaProxyServiceConfig({
required this.appId,
required this.token,
this.logLevel = FpaProxyServiceLogLevel.none,
this.logFileSizeKb = 0,
this.logFilePath = '',
});
final String appId;
final String token;
final FpaProxyServiceLogLevel logLevel;
final int logFileSizeKb;
final String logFilePath;
}
参数 | 说明 |
---|---|
appId | 声网为 app 开发者签发的 App ID,详见 获取 App ID。 |
token | 在 app 服务器端生成的用于鉴权的 Token。如果你的项目使用 App ID 鉴权,你可以将 token 参数赋值为 App ID 的值,自 1.0.0 起也可以赋值为 null 、"" 或不填该参数;如果你使用 App ID + Token 鉴权,则需要传入你在 App 服务端生成的 Token。 |
logLevel | 日志级别。
|
fileSize | 单个日志文件的大小,单位为 KB。默认值为 1024 KB。如果你将该参数设为 1024 KB,SDK 会最多输出总计 5 MB 的日志文件。如果你将该参数设为小于 1024 KB,设置不生效,单个日志文件最大仍为 1024 KB。 |
logFilePath | 日志文件的完整路径,包括文件名。请确保你指定的目录存在而且可写。你可通过该参数修改日志文件名。 |
FpaHttpProxyChainConfig
接口类包含以下成员。
class FpaHttpProxyChainConfig {
FpaHttpProxyChainConfig({
this.chainArray,
this.chainArraySize = 0,
this.fallbackWhenNoChainAvailable = true,
});
final List<FpaChainInfo>? chainArray;
final int chainArraySize;
final bool fallbackWhenNoChainAvailable;
}
为加速链路添加目标 IP/域名与 chain ID 的映射关系。
参数 | 说明 |
---|---|
chainArray | FpaChainInfo 对象的数组。详见 FpaChainInfo 。 |
chainArraySize | 数组的长度。 |
fallbackWhenNoChainAvailable | 对于 HTTP 本地代理,SDK 找不到 源站 对应的 chain ID 时是否回退到本地连接。 |
FpaChainInfo
接口类包含以下成员。
class FpaChainInfo {
FpaChainInfo({
required this.address,
this.port = 0,
this.chainId = 0,
this.enableFallback = true,
});
final String address;
final int port;
final int chainId;
final bool enableFallback;
}
获取 FpaChainInfo
对象。
参数 | 说明 |
---|---|
address | 目标 源站 的 IP 或域名。 |
port | 目标 源站 的端口。 |
chainId | 加速通道的 chain ID。 |
enableFallback | 对于此加速通道,FPA 连接失败时是否回退到本地连接。
|
FpaChainInfo
对象。
class FpaProxyConnectionInfo {
FpaProxyConnectionInfo({
required this.dstIpOrDomain,
required this.connectionId,
required this.proxyType,
this.dstPort = 0,
this.localPort = 0,
});
final String dstIpOrDomain;
final String connectionId;
final String proxyType;
final int dstPort;
final int localPort;
}
FPA 代理连接的相关信息。包含以下成员参数。
参数 | 说明 |
---|---|
dstIpOrDomain | 目标 源站的 IP 或域名。 |
connectionId | 连接 ID。每个 ID 代表 SDK 通过 FPA 代理与目标 源站的一次完整连接。 |
proxyType | 代理类型。
|
dstPort | 目标 源站的端口。 |
localPort | 本地代理的端口。 |
FpaProxyServiceDiagnosisInfo
接口类包含以下参数。
class FpaProxyServiceDiagnosisInfo {
FpaProxyServiceDiagnosisInfo({
required this.installId,
required this.instanceId,
});
final String installId;
final String instanceId;
}
参数 | 说明 |
---|---|
installId | 与运行集成 SDK 的 app 的设备唯一对应的 ID。如果你清除了 app 缓存数据,该参数会更新。 |
instanceId | 与当前 FpaProxyService 实例唯一对应的 ID。 |
abstract class FpaProxyServiceObserver
FpaProxyServiceObserver
类包含以下回调。
void onConnected(FpaProxyConnectionInfo info);
在成功连接 FPA 代理时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
void onAccelerationSuccess(FpaProxyConnectionInfo info);
在 FPA 代理加速成功时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
void onConnectionFailed(
FpaProxyConnectionInfo info, FpaProxyServiceReasonCode reason);
在连接 FPA 代理失败且连接未回退时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FpaProxyServiceReasonCode 枚举。 |
void onDisconnectedAndFallback(
FpaProxyConnectionInfo info, FpaProxyServiceReasonCode reason);
在连接 FPA 代理失败且回退至本地连接时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FpaProxyServiceReasonCode 枚举。 |
class FpaProxyServiceException implements Exception {
FpaProxyServiceException(this.errorCode);
final int errorCode;
@override
String toString() {
return '[FpaProxyServiceException] errorCode: $errorCode';
}
}
方法调用失败抛出的 exception。
参数 | 说明 |
---|---|
errorCode | 错误码。详见 FPA 错误码。 |
SDK 返回的同步错误码。
参数 | 说明 |
---|---|
none |
0:没有错误。 |
invalidArgument |
-1:参数无效。请检查你是否使用了正确的参数。 |
noMemory |
-2:无法为对象分配内存。 |
notInitialized |
-3:FPA 服务没有初始化。请确保你成功进行了初始化。 |
coreInitializeFailed |
-4:FPA 服务初始化失败。 |
unableBindSocketPort |
-5:无法绑定 SDK 内部的 socket 端口。 |
SDK 回调返回的失败原因。
参数 | 说明 |
---|---|
FpaFailedReasonDnsQueryFpaFailedReasonDnsQuery |
-101:DNS 解析错误。 |
FpaFailedReasonSocketCreateFailed |
-102:SDK 内部创建 socket 失败。 |
FpaFailedReasonSocketConnect |
-103:SDK 内部连接 socket 失败。 |
FpaFailedReasonConnectTimeout |
-104:连接远端服务器超时。 |
FpaFailedReasonNoChainIdMatch |
-105:找不到 chain ID。请检查是否设置了正确的 chain ID。 |
FpaFailedReasonDataRead |
-106:读取数据失败。 |
FpaFailedReasonDataWrite |
-107:写入数据失败。 |
FpaFailedReasonTooFrequently |
-108:每秒并发连接数超出 100 条的限制。 |
FpaFailedReasonTooManyConnections |
-109:当前存在的活跃连接数超出 1000 条的限制。 |
输出的日志级别。
参数 | 说明 |
---|---|
FpaLogLevelNoLogOutput |
0:没有日志。 |
FpaLogLevelInfo |
1:Information 级别。 |
FpaLogLevelWarning |
2:Warning 级别。 |
FpaLogLevelError |
4:Error 级别。 |
FpaLogLevelFatal |
8:Fatal 级别。 |