【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  # 安装使用方法                    
相关推荐
万少2 小时前
第五款 HarmonyOS 上架作品 奇趣故事匣 来了
前端·harmonyos·客户端
幽蓝计划2 小时前
HarmonyOS NEXT仓颉开发语言实战案例:电影App
华为·harmonyos
HMS Core4 小时前
HarmonyOS免密认证方案 助力应用登录安全升级
安全·华为·harmonyos
生如夏花℡4 小时前
HarmonyOS学习记录3
学习·ubuntu·harmonyos
伍哥的传说4 小时前
鸿蒙系统(HarmonyOS)应用开发之手势锁屏密码锁(PatternLock)
前端·华为·前端框架·harmonyos·鸿蒙
遇到困难睡大觉哈哈18 小时前
HarmonyOS 公共事件机制介绍以及多进程之间的通信实现(9000字详解)
华为·harmonyos
幽蓝计划21 小时前
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
开发语言·harmonyos
伍哥的传说21 小时前
鸿蒙系统(HarmonyOS)应用开发之实现电子签名效果
开发语言·前端·华为·harmonyos·鸿蒙·鸿蒙系统
Georgewu1 天前
【HarmonyOS】应用开发拖拽功能详解
harmonyos
塞尔维亚大汉1 天前
鸿蒙内核源码分析(构建工具篇) | 顺瓜摸藤调试鸿蒙构建过程
源码·harmonyos