|
|
1 mês atrás | |
|---|---|---|
| .. | ||
| .preview | 1 mês atrás | |
| oh_modules | 1 mês atrás | |
| src | 1 mês atrás | |
| BuildProfile.ets | 1 mês atrás | |
| README.md | 1 mês atrás | |
| Socket.IO协议实现说明.md | 1 mês atrás | |
| Socket.IO连接配置说明.md | 1 mês atrás | |
| SocketIO架构说明.md | 1 mês atrás | |
| build-profile.json5 | 1 mês atrás | |
| hvigorfile.ts | 1 mês atrás | |
| oh-package-lock.json5 | 1 mês atrás | |
| oh-package.json5 | 1 mês atrás | |
SocketIO 能力层模块,提供实时通信能力,可独立打包为 SDK。
@xdz/base-core: 基础设施层(ILog、StorageImpl)@kit.NetworkKit: HarmonyOS 网络工具包(WebSocket)@kit.AbilityKit: HarmonyOS Ability 工具包import { SocketIOManager } from '@xdz/capability-socketio';
import { AuthManager } from '@xdz/base-common';
// 1. 初始化 SocketIO 管理器
SocketIOManager.init(context);
// 2. 设置回调函数
SocketIOManager.isLoggedInProvider = () => {
return AuthManager.getInstance().isLoggedIn();
};
SocketIOManager.refreshTokenProvider = async () => {
const result = await AuthManager.getInstance().refreshToken();
if (result.isSuccess) {
return AuthManager.getInstance().getAccessToken();
}
return null;
};
import { SocketIOManager } from '@xdz/capability-socketio';
async onForeground(): Promise<void> {
await SocketIOManager.onForeground();
}
onBackground(): void {
SocketIOManager.onBackground();
}
import { SocketIORepositoryFactory } from '@xdz/capability-socketio';
// 获取 Repository 实例
const repository = SocketIORepositoryFactory.getInstance();
// 连接服务器
await repository.connect(serverUrl, token);
// 观察连接状态
repository.connectionState.observe((isConnected) => {
console.log('连接状态:', isConnected);
});
// 发送消息
await repository.sendVehicleControl('lock', vehicleId);
// 观察车辆报警
repository.vehicleAlarm.observe((alarm) => {
if (alarm) {
console.log('收到报警:', alarm.data);
}
});
capability-socketio/
├── src/main/ets/socketio/
│ ├── api/ # API 接口
│ │ └── SocketIOService.ets
│ ├── factory/ # 工厂类
│ │ ├── SocketIOServiceFactory.ets
│ │ └── SocketIORepositoryFactory.ets
│ ├── impl/ # 实现类
│ │ └── SocketIOServiceImpl.ets
│ ├── manager/ # 管理器
│ │ └── SocketIOManager.ets
│ ├── model/ # 数据模型
│ │ ├── SocketIOEvent.ets
│ │ └── SocketIOResponse.ets
│ └── repository/ # 数据仓库
│ ├── SocketIORepository.ets
│ └── StateFlow.ets
├── oh-package.json5 # 依赖配置
├── module.json5 # 模块配置
└── index.ets # 导出入口
模块已配置为 type: "har",可以独立打包。
# 在 DevEco Studio 中
# 1. 右键点击 capability-socketio 模块
# 2. 选择 "Build" -> "Make Module 'capability-socketio'"
# 3. 生成的 HAR 文件在 build/default/outputs/default/ 目录下
// 在其他项目的 oh-package.json5 中
{
"dependencies": {
"@xdz/capability-socketio": "file:../path/to/capability-socketio.har"
}
}
connect(serverUrl?: string, token?: string): 连接服务器disconnect(): 断开连接isConnected(): 检查连接状态checkAndReconnect(serverUrl?: string, token?: string): 检查并重连sendVehicleControl(command: string, vehicleId: number): 发送车辆控制指令init(context: Context): 初始化管理器onForeground(): App 进入前台时调用onBackground(): App 进入后台时调用isLoggedInProvider: 登录状态检查回调refreshTokenProvider: Token 刷新回调?token=xxx)onForeground() 和 onBackground()MIT