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.鸿蒙南向开发方向

相关推荐
Nuyoah11klay21 分钟前
华清远见25072班网络编程day1
linux·服务器·网络·网络编程
liulilittle6 小时前
OPENPPP2 —— IP标准校验和算法深度剖析:从原理到SSE2优化实现
网络·c++·网络协议·tcp/ip·算法·ip·通信
北极光SD-WAN组网8 小时前
从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造
网络·5g·制造
Georgewu8 小时前
【HarmonyOS 6】 The target can not be empty. check the build.profile,json5 file of
harmonyos
Georgewu8 小时前
【HarmonyOS 6】Install Failed: error: failed to install bundle.code:9568322
harmonyos
阿昭L9 小时前
HTTP原理
网络·网络协议·http
hazy1k9 小时前
STM32H750 RTC介绍及应用
网络·stm32·实时音视频
没书读了10 小时前
考研复习-计算机网络-第三章-数据链路层
网络·计算机网络·考研
on the way 12310 小时前
多线程之HardCodedTarget(type=OssFileClient, name=file, url=http://file)异常
网络·网络协议·http
WhoisXMLAPI10 小时前
WhoisXML API再次荣登2025年美国Inc. 5000快速成长企业榜单
网络·安全