OpenHarmony网络通信-socket-io

简介

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

效果展示

下载安装

shell 复制代码
ohpm install @ohos/socketio 

OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包

使用说明

  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));
  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)
  • 连接服务器
typescript 复制代码
connect(uri: string)
  • 清楚所有监听器
typescript 复制代码
clear_con_listeners()
  • 清楚所有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参数。

    git clone --recursive https://gitee.com/openharmony-tpc/openharmony_tpc_samples.git

  2. 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)。

目录结构

复制代码
|---- socketio  
|     |---- entry  # 示例代码文件夹
|     |---- library  # socket.io库
|           |---- ets #对外接口目录
				  |---- client_socket.ets # 对外接口
            |---- cpp # 组件代码目录
                  |---- src # 核心类目录
                  |---- client_socket.cpp # socket.io客户端NAPI层
|     |---- README.md  # 安装使用方法                    

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ......

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ......

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ......

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题

2.性能优化方向

3.架构方向

4.鸿蒙开发系统底层方向

5.鸿蒙音视频开发方向

6.鸿蒙车载开发方向

7.鸿蒙南向开发方向

相关推荐
@insist1231 天前
网络工程师-边界安全与远程接入实战(二):NAT 配置全解
网络·网络工程师·软考·软件水平考试
@insist1231 天前
网络工程师-智能流量管控实战(一):策略路由与路由策略精讲
网络·网络工程师·软考·软件水平考试
橙子也要努力变强1 天前
信号的处理方式与生命周期(核心机制篇)
linux·网络·c++
Shingmc31 天前
【Linux】Socket编程TCP
服务器·网络·tcp/ip
xixixi777771 天前
Gartner 2026核心趋势:前置式主动安全(PCS)成为安全战略新范式,量子安全+国密算法构筑政企纵深防御底座
网络·人工智能·安全·web安全·ai·量子计算
浮芷.1 天前
生命科学数据视界防御:基于鸿蒙Flutter陀螺仪云台与三维体积光栅的视轴锁定架构
flutter·华为·架构·开源·harmonyos·鸿蒙
浮芷.1 天前
微观搜打撤:基于鸿蒙flutter的内存快照算法的局内外状态隔离与高阶背包系统设计
算法·flutter·华为·开源·harmonyos·鸿蒙
浮芷.1 天前
东方修仙模拟器:基于 鸿蒙Flutter 状态机与 CustomPainter 的境界跃升与天劫渲染架构
科技·flutter·华为·架构·开源·harmonyos·鸿蒙
Johnstons1 天前
TCP重传率飙升怎么查?一次生产环境排障的完整复盘
网络·网络协议·tcp/ip
IpdataCloud1 天前
如何将IP查询API集成到网站或应用中?主流方案与选型对比
网络·网络协议·tcp/ip