本文包括 FPA SDK 的发版说明。
该版本于 2022 年 9 月 5 日发布。
修复了一些 SDK 的问题。
该版本于 2022 年 8 月 18 日发布。
回退链路加密
自该版本起,SDK 侧新增了回退链路加密的功能,可以保证你的加速链路在回退后持续处于加密状态。你只需要在 FpaChainInfo
类中设置 enableCrypto
参数为 true,并正确配置 userCas
及 verifyHost
参数,即可实现回退链路加密功能。
声网推荐在使用服务端 SSL 连接优化方案时配合使用回退链路加密功能。
优化了日志上传功能。
FpaChainInfo
类新增以下成员参数:
enableCrypto
userCas
verifyHost
该版本于 2022 年 8 月 5 日发布。
修复了 SDK 偶现的崩溃问题。
该版本于 2022 年 7 月 12 日发布。
该版本对 SDK 进行了如下优化:
该版本于 2022 年 2 月 7 日发布。
代理状态回调 API 重构
自该版本起,代理状态回调 API 进行了重构。
v0.1.14.0 使用 onProxyEvent
回调获取代理的状态及错误码。
自 v1.0.0 起,删除 onProxyEvent
回调并改用以下回调:
onConnected
:连接代理成功。onAccelerationSuccess
:代理加速数据成功。onConnectionFailed
:连接代理失败且未回退。onDisconnectedAndFallback
:连接代理失败且回退至本地连接。新增连接限制
自该版本起,每秒并发连接数最多为 100 条,当前存在的活跃连接最多 1000 条。
如果超出限制,根据你是否设置了 fallback 机制,SDK 会在 onConnectionFailed
或 onDisconnectedAndFallback
回调的 reason
参数中返回 -108 或 -109 错误码。
错误码重构
自该版本起,SDK 返回的错误码进行了重构。
v0.1.14.0 中,同步和异步均可返回错误码。
v1.0.0 中,错误码分为 ErrorCode
和 FailedReason
:同步返回 ErrorCode
;异步返回 FailedReason
。且所有错误码的数值均发生变更。
不开启 Token 鉴权时的 token 参数值设置
在 FpaProxyServiceConfig
中,如果不开启 Token 鉴权,你不仅可以将 token
参数赋值为 App ID 的值,自该版本起也可以赋值为 null
、""
或不填该参数。
新增
onConnected
回调onAccelerationSuccess
回调onConnectionFailed
回调onDisconnectedAndFallback
回调FailedReason
枚举错误码变更
v0.1.14.0 的错误码如下:
值 | 说明 |
---|---|
0 |
没有错误。 |
-10001 |
通用错误。 |
-10002 |
FPA 服务未启动完成。 |
-10003 |
SDK 不支持该方法。 |
-10004 |
请求被拒绝。 |
-10005 |
缓冲区太小,无法存储返回的数据。 |
-10006 |
状态无效 |
-10007 |
超时错误。 |
-10008 |
请求频率超出限制。 |
-10009 |
参数无效。 |
-10010 |
SDK 未初始化。你需要先初始化 SDK 再进行其他操作。 |
-10011 |
没有权限。 |
-10012 |
FPA 服务启动失败。 |
-10013 |
代理端口绑定失败。 |
-10014 |
端口无效。 |
-10015 |
文件句柄无效。 |
-10016 |
连接失败。 |
-10017 |
发送失败。 |
-10018 |
读取失败。 |
-10019 |
找不到 chain ID。请检查是否设置了正确的 chain ID。 |
v1.0.0 的错误码如下:
值(ErrorCode ) |
说明 |
---|---|
0 |
没有错误。 |
-1 |
参数无效。请检查你是否使用了正确的参数。 |
-2 |
无法为对象分配内存。 |
-3 |
FPA 服务没有初始化。请确保你成功进行了初始化。 |
-4 |
FPA 服务初始化失败。 |
-5 |
无法绑定 SDK内部的 socket 端口。 |
值(FailedReason ) |
说明 |
---|---|
0 |
未知。 |
-101 |
DNS 解析错误。 |
-102 |
SDK 内部创建 socket 失败。 |
-103 |
SDK 内部连接 socket 失败。 |
-104 |
连接远端服务器超时。 |
-105 |
找不到 chain ID。请检查是否设置了正确的 chain ID。 |
-106 |
读取数据失败。 |
-107 |
写入数据失败。 |
-108 |
每秒并发连接数超出 100 条的限制。 |
-109 |
当前存在的活跃连接数超出 1000 条的限制。 |
删除
onProxyEvent
回调EventCode
类该版本于 2021 年 12 月 27 日发布。
修复了一些底层的连接问题。
该版本于 2021 年 12 月 15 日发布。
修复了 app 切换到后台一段时间后,再切回到前台时 FPA 服务不可用的问题。
该版本于 2021 年 12 月 13 日发布。
import 方式变更
自该版本起,SDK 的 import 方式由于 package 结构变更发生如下变化:
v0.1.0.0 的 import 方式如下:
import io.agora.fpaService.FPAConfig;
import io.agora.fpaService.FpaHttpService;
import io.agora.fpaService.FpaHttpServiceObserver;
v0.1.12.0 的 import 方式如下:
import io.agora.fpa.proxy.FpaProxyService;
import io.agora.fpa.proxy.FpaProxyServiceConfig;
import io.agora.fpa.proxy.IFpaServiceListener;
初始化方式变更
v0.1.0.0 版本的初始化逻辑中包含了设置 chain ID 操作,使用 FpaService.createFpaService(config)
进行初始化。
FpaConfig config = new FpaConfig;
config.setAppId("<Your App ID>");
config.setToken("<Your App ID or token>");
Map<String ,Integer> chainIdTable = new HashMap<>();
chainIdTable.put("<Your IP or domain:port>","<Your chain ID>");
config.setChainIdTable(chainIdTable);
FpaService fpaService = FpaService.createFpaService(config);
v0.1.12.0 版本的初始化逻辑中移除了设置 chain ID 的操作。chain ID 在 setOrUpdateHttpProxyChainConfig
方法(HTTP 代理)和 getTransparentProxyPort
方法(透明代理)中设置。使用 FpaProxyService.getInstance().start(config)
进行初始化并开启 FPA 服务。
FpaProxyServiceConfig.Builder builder = new FpaProxyServiceConfig.Builder(workDir);
builder.setAppId("<Your App ID>")
.setToken("<Your App ID or token>")
.setLogFileSizeKb(1024)
.setLogLevel(LogLevel.LOG_ERROR);
config = builder.build();
FpaProxyService.getInstance().start(config);
配置 chain ID 方式变更
v0.1.0.0 版本的设置 chain ID 操作包含在初始化过程中。详见初始化方式变更部分。
v0.1.12.0 版本的设置 chain ID 操作通过 setOrUpdateHttpProxyChainConfig
方法(HTTP 代理)和 getTransparentProxyPort
方法(透明代理)进行。且 chain ID 的数据类型从字符型变为整型。
下面的示例代码展示了如何为 HTTP 代理设置 chain ID:
// 为 HTTP 代理设置 chain ID
FpaHttpProxyChainConfig.Builder builder = new FpaHttpProxyChainConfig.Builder();
// 设置加速通道的 chain ID,例如 123
// 设置 IP 地址或域名
// 设置端口,例如 80
// 设置是否允许此加速通道在 FPA 代理连接失败时回退到本地连接
builder.builder.addChainInfo(123, "<Your IP or domain>", 80, true)
// 设置是否在 HTTP 本地代理在 FPA SDK 找不到源站对应的 chain ID 时回退到本地连接
.fallbackWhenNoChainAvailable(true);
FpaProxyService.getInstance().setOrUpdateHttpProxyChainConfig(builder.build());
下面的示例代码展示了如何为透明代理设置 chain ID:
// 设置你的 chain ID,例如 123
int chainId = 123;
// 设置目标域名或 IP
String address = "<Your domain or IP>";
// 通过 port 参数设置端口,例如 30103
int port = 30103;
// 设置是否允许此加速通道在 FPA 代理连接失败时回退到本地连接
boolean enableFallback = true;
// 调用 getTransparentProxyPort 获取透明代理的端口
FpaChainInfo chainInfo = new FpaChainInfo(chainId, address, port, enableFallback);
int port = FpaProxyService.getInstance().getTransparentProxyPort(chainInfo);
回调监听方式变更
v0.1.0.0 版本使用 FpaHttpServiceObserver
类设置 onEvent
回调和 onTokenWillExpireEvent
回调。
v0.1.12.0 版本使用 IFpaServiceListener
类设置 onProxyEvent
回调。
透明代理
该版本新增 getTransparentProxyPort
方法,用于获取 FPA 透明代理的端口。你可以通过透明代理实现基于 TCP 协议的全链路加速。
加速失败回退机制
该版本针对 HTTP 代理下的全部加速链路增加 fallbackWhenNoChainAvailable
属性,可以用于开启找不到源站对应的 chain ID 时的回退机制;针对单个加速链路增加 enable
参数,可以用于开启加速失败回退机制。
开启找不到 chain ID 时的回退机制之后,如果 FPA 找不到源站对应的 chain ID,SDK 会自动回退到本地连接,不会造成网络连接中断。
开启加速失败回退机制之后,如果 FPA 加速失败,SDK 会自动回退到本地连接,不会造成网络连接中断。
代理类型 | 找不到源站对应的 chain ID 时的回退机制 | 加速失败回退机制 |
---|---|---|
HTTP 代理 | FpaHttpProxyChainConfig.fallbackWhenNoChainAvailable |
FpaHttpProxyChainConfig.addChainInfo 的 enable 参数 |
透明代理 | 无 | getTransparentProxyPort 的 info 参数 |
修复了一些导致 SDK 崩溃的问题。
删除
renewToken
方法updateChainIdTable
方法onEvent
回调onTokenWillExpireEvent
回调FPAConfig
类移除 setChainIdTable
属性新增
getDiagnosisInfo
方法getInstance
方法getTransparentProxyPort
方法setOrUpdateHttpProxyChainConfig
方法getSdkVersion
方法getSdkBuildInfo
方法onProxyEvent
回调setListener
方法FpaProxyServiceDiagnosisInfo
类FpaChainInfo
类FpaHttpProxyChainConfig
类FpaProxyConnectionInfo
类LogLevel
枚举变更
createFpaService
方法改名为 start
FpaHttpServiceObserver
类改名为 IFpaServiceListener
destroy
方法改名为 stop
FpaService
类改名为 FpaProxyService
FPAConfig
类改名为 FpaProxyServiceConfig
该版本于 2021 年 10 月 20 日发布。
该版本为 FPA Android SDK 的首个版本。支持通过设置 HTTP 本地代理的方式实现基于 HTTP/HTTPS 的全链路加速。