【OpenHarmony】 鸿蒙事件通信:socket-io

简介

socket.io是一个在客户端和服务器之间实现低延迟、双向和基于事件的通信的库。建立在 WebSocket 协议之上,并提供额外的保证,例如回退到 HTTP 长轮询或自动重新连接。

效果展示

下载安装

shell 复制代码
ohpm install @ohos/socketio 

使用说明

  1. 导入依赖库
typescript 复制代码
import { client_socket } from '@ohos/socketio';
  1. 初始化socket.io客户端
typescript 复制代码
client: client_socket = new client_socket();
  1. 设置监听事件
typescript 复制代码
this.client.set_open_listener(this.on_open.bind(this));
this.client.set_fail_listener(this.on_fail.bind(this));
this.client.set_reconnecting_listener(this.on_reconnecting.bind(this));
this.client.set_reconnect_listener(this.on_reconnect.bind(this));
this.client.set_close_listener(this.on_close.bind(this));
this.client.set_socket_open_listener(this.on_socket_open.bind(this));
this.client.set_socket_close_listener(this.on_socket_close.bind(this));
  1. 连接服务器
typescript 复制代码
this.client.connect(uri) //uri: socket.io服务端地址
  1. 设置用户消息监听以及用户加入离开监听
  • 监听事件实现
typescript 复制代码
on_user_left_listener(event_json: string): void {
	//回调数据处理
}
  • 设置监听
typescript 复制代码
this.client.on("new message", this.on_new_message_listener.bind(this));
this.client.on("user joined", this.on_user_joined_listener.bind(this));
this.client.on("user left", this.on_user_left_listener.bind(this));
this.client.on("login", this.on_login_listener.bind(this));

DD一下: 欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。

erlang 复制代码
`欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
  1. 登录服务器,并设置登录成功回调
typescript 复制代码
this.client.emit("add user", username, this.on_emit_callback.bind(this));
  1. 发送消息并设置发送消息监听
typescript 复制代码
this.client.emit("new message", message, this.on_emit_callback);
  1. 关闭服务器链接并清理监听事件
typescript 复制代码
this.client.socket_close();
this.client.clear_socket_listeners();

接口说明

  • 初始化客户端
typescript 复制代码
client: client_socket = new client_socket();
  • 设置客户端监听器
typescript 复制代码
set_open_listener(on_open: () => void)
  • 设置客户端失败监听器
typescript 复制代码
set_fail_listener(on_fail: () => void)
  • 设置客户端正在重新连接监听器
typescript 复制代码
set_reconnecting_listener(on_reconnecting: () => void)
  • 设置客户端重新连接监听器
typescript 复制代码
set_reconnect_listener(on_reconnect: () => void)
  • 设置客户端关闭监听器
typescript 复制代码
set_close_listener(on_close: (reason: string) => void)
  • 设置socket打开监听
typescript 复制代码
set_socket_open_listener(on_socket_open: (nsp: string) => void)
  • 设置socket关闭监听
typescript 复制代码
set_socket_close_listener(on_socket_close: (nsp: string) => void)
  • 设置 header
typescript 复制代码
set_headers(headers: string)
  • 连接服务器
typescript 复制代码
connect(uri: string)
  • 清除所有监听器
typescript 复制代码
clear_con_listeners()

DD一下: 欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。

erlang 复制代码
`欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
  • 清除所有socket监听器
typescript 复制代码
clear_socket_listeners()
  • 设置重连次数
typescript 复制代码
set_reconnect_attempts(attempts: number)
  • 设置重新连接尝试的延迟时间
typescript 复制代码
set_reconnect_delay(millis: number)
  • 设置重新连接的最大延迟。
typescript 复制代码
set_reconnect_delay_max(millis: number)
  • 关闭连接
typescript 复制代码
close()
  • 同步关闭
typescript 复制代码
sync_close()
  • 判断是否打开
typescript 复制代码
opened(): boolean
  • 获取sessionID
typescript 复制代码
get_sessionid(): string
  • 注册一个新的响应服务器事件的事件处理器
typescript 复制代码
on(event_name: string, on_event_listener: (event_json: string) => void)
  • 设置socket监听关闭
typescript 复制代码
socket_close()
  • 设置错误监听
typescript 复制代码
on_error(on_error_listener: (message: string) => void)
  • 关闭错误监听
typescript 复制代码
off_error()
  • 通过提供的name事件名称向socket标志发送事件 说明: 响应服务器用来确认消息的应答
typescript 复制代码
emit(name: string, message: string, on_emit_callback?: (emit_callback_json: string) => void)

源码下载

  1. 本项目依赖 socket.io-client-cpp 库,通过git submodule引入,下载代码时需加上--recursive参数。
bash 复制代码
git clone --recursive https://gitee.com/openharmony-tpc/openharmony_tpc_samples.git
  1. Linux环境无需执行该步骤,如果是windows环境下,代码下载完成后合入OHOS适配的代码,cd 进入到socketio/library/src/main/cpp/thirdModule 目录下,执行 modify.sh 脚本,将本目录下的 patch 文件合入到 socket.io-client-cpp 源码中。 3. 开始编译项目。

约束与限制

在下述版本验证通过:

  • IDE:DevEco Studio 4.1.3.532; SDK: 4.1.0.67(SP3)。
  • IDE:DevEco Studio Next ,Developer Beta1(5.0.3.121); SDK:API12 (5.0.0.16)。
  • IDE:DevEco Studio NEXT Developer Beta2(5.0.3.500); SDK: API12 (5.0.0.31)。
  • IDE:DevEco Studio NEXT Developer Beta1(5.0.3.810); SDK: API12 (5.0.0.68)。

目录结构

lua 复制代码
|---- socketio  
|     |---- entry  # 示例代码文件夹
|     |---- library  # socket.io库
|           |---- ets #对外接口目录
				  |---- client_socket.ets # 对外接口
            |---- cpp # 组件代码目录
                  |---- src # 核心类目录
                  |---- client_socket.cpp # socket.io客户端NAPI层
|     |---- README.md  # 安装使用方法                    
相关推荐
别说我什么都不会1 小时前
【OpenHarmony】 鸿蒙网络请求库之eventsource
harmonyos
颜颜颜yan_3 小时前
【HarmonyOS5】掌握UIAbility启动模式:Singleton、Specified、Multiton
后端·架构·harmonyos
二蛋和他的大花4 小时前
HarmonyOS运动开发:深度解析文件预览的正确姿势
华为·harmonyos
长弓三石5 小时前
鸿蒙网络编程系列53-仓颉版TCP连接超时分析示例
前端·harmonyos
libo_20255 小时前
DevEco Studio测试用例录制功能详解(HarmonyOS 5)
harmonyos
lewis_dys5 小时前
微信内引导用户使用“在浏览器打开”开发参考
harmonyos
zhanshuo6 小时前
告别卡顿!鸿蒙新闻列表流畅滚动优化全攻略
harmonyos
zhanshuo6 小时前
鸿蒙开发者必看!三步搞定动态权限请求,告别用户权限流失
harmonyos
王二蛋与他的张大花6 小时前
HarmonyOS运动开发:深度解析文件预览的正确姿势
harmonyos
TRockBots7 小时前
三、DevEco Studio安装和HelloWorld应用
harmonyos