WebSocketClient是一个为OpenHarmony开发的WebSocket客户端库,提供简单易用的API来建立WebSocket连接、发送和接收消息。
- 支持WebSocket客户端连接
- 支持文本和二进制数据传输
- 支持事件监听和处理
- C++的WebSocket实现,提供给ArkTS使用,解决ArkTS提供的 API12-API17下 WebSocket下 buffer和string混合传递,类型错乱的问题,
- 解决on("Message")下payload大小为0 导致message为undefined的情况
- 1.x.x 版本为仓颉实现,会持续维护
ohpm install @duke/websocket-client
OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包
导入WebSocket库:
import { createWebSocket, WebSocketClient, WebSocketClientEvent } from '@duke/websocket-client';创建WebSocket客户端实例:
const wsClient = createWebSocket();连接到WebSocket服务器:
wsClient.connect("ws://your-websocket-server-url");可以监听以下事件:
连接打开事件:
wsClient.on("open", (event: WebSocketClientEvent) => {
console.log("WebSocket连接已打开");
})接收到文本消息:
wsClient.on("messageText", (data: string) => {
console.log("收到文本消息:", data);
})接收到二进制数据:
wsClient.on("messageBuffer", (data: ArrayBuffer) => {
console.log("收到二进制消息,长度: " + data.byteLength);
})连接关闭事件:
wsClient.on("close", (event: WebSocketClientEvent) => {
console.log("WebSocket连接已关闭");
})错误事件:
wsClient.on("error", (event: WebSocketClientEvent) => {
console.log("WebSocket发生错误" + event.reason);
})发送文本消息:
wsClient.send("Hello, WebSocket!");发送二进制数据:
const buffer = new ArrayBuffer(10);
wsClient.send(buffer);wsClient.close();可以移除特定事件的监听器:
// 移除特定回调函数
wsClient.off("messageText", messageHandler)
// 移除所有回调函数
wsClient.off("messageText");| 方法名 | 入参 | 接口描述 |
|---|---|---|
| connect | url: string | headers?: Record<string, string> | 创建WebSocket实例,返回WebSocketClient实例 |
| connect | url: string | headers: Record<string, string> | callback: (error: string) => void | 连接到指定URL的WebSocket服务器,通过回调处理结果 |
| pingInterval | interval: number | 设置心跳间隔,单位毫秒,默认为40秒,为0,表示不发送心跳包,以连接后不能中途修改 |
| send | data: string | ArrayBuffer | 发送文本或二进制数据,返回Promise |
| send | data: string | ArrayBuffer, callback: (error: string) => void | 发送文本或二进制数据,通过回调处理结果 |
| close | 无 | 关闭WebSocket连接,返回Promise |
| close | callback: (error: string) => void | 关闭WebSocket连接,通过回调处理结果 |
| on | event: string, callback: Function | 注册事件监听器 |
| off | event: string, callback?: Function | 移除事件监听器 |
| 事件名 | 回调参数类型 | 描述 |
|---|---|---|
| open | WebSocketClientEvent | 连接成功打开时触发 |
| messageText | string | 收到文本消息时触发 |
| messageBuffer | ArrayBuffer | 收到二进制消息时触发 |
| close | WebSocketClientEvent | 连接关闭时触发 |
| error | WebSocketClientEvent | 发生错误时触发 |
| 属性名 | 类型 | 描述 |
|---|---|---|
| code | string | 报错代码 |
| reason | string | 原因描述 |
在下述版本验证通过:
DevEco Studio: 5.0.5.315, SDK: HarmonyOS 5.0.1 Release Ohos_sdk_public 5.0.1.115 (API Version 13 Release)
|---- WebSocket
| |---- AppScrope # 示例代码文件夹
| |---- entry # 示例代码文件夹
| |---- examples # 示例代码文件夹
| |---- library # WebSocketClient库仓颉版实现文件夹
| |---- build # WebSocketClient模块打包后的文件
| |---- index.ets # 对外接口
| |---- TestServer # Node 测试 websocket服务端
| |---- websocket # WebSocketClient库C++版实现文件夹
| |---- build # WebSocketClient模块打包后的文件
| |---- index.ets # 对外接口
| |---- README.md # 安装使用方法
| |---- CHANGELOG.md # 更新日志
使用过程中发现任何问题都可以提 Issue 给我,当然,我也非常欢迎你给我发 PR 。
本项目基于 MIT license ,请自由地享受和参与开源。
- @duke/view-model 鸿蒙版本的ViewModel库: https://gitee.com/Duke_Bit/view-model
- @duke/logan-ext Logan扩展库,方便开箱即用: https://gitee.com/Duke_Bit/logan
- @duke/logan Logan是一个为OpenHarmony开发的日志库,对美团技术团队的Logan的鸿蒙化移植版本: https://gitee.com/Duke_Bit/logan
- eventpost 事件分发,支持组件中的lifecycle,在组件中使用自动取消订阅: https://gitee.com/Duke_Bit/eventpost
- @duke/component-lifecycle 鸿蒙版本的Lifecycle库,支持组件、Router和Navigation: https://gitee.com/Duke_Bit/component-lifecycle
- @duke/elf-dialog CustomDialog黑魔法 不依赖promptAction 实现的函数级弹窗,省去复杂的模版代码,让你专注于你的业务,一行代码搞定弹窗: https://gitee.com/Duke_Bit/elf-dialog
- @duke/elf-refresh OpenHarmony 刷新组件,支持下拉刷新和上拉加载更多,支持各种组件,List、Grid,支持header,footer,目标打造HarmonyOS的SmartRefreshLayout: https://gitee.com/Duke_Bit/ElfRefresh