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

相关推荐
Deryck_德瑞克43 分钟前
Java网络通信—TCP
java·网络·tcp/ip
GodK7771 小时前
IP 数据包分包组包
服务器·网络·tcp/ip
梁诚斌1 小时前
VSOMEIP代码阅读整理(1) - 网卡状态监听
运维·服务器·网络
ZachOn1y2 小时前
计算机网络:计算机网络概述 —— 描述计算机网络的参数
网络·tcp/ip·计算机网络·考研必备
我命由我123452 小时前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
两点王爷3 小时前
使用WebClient 快速发起请求(不使用WebClientUtils工具类)
java·网络
wusam3 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器
什么鬼昵称5 小时前
Pikachu-xxe-xxe漏洞
网络·安全·xxe
zhongcx6 小时前
鸿蒙应用示例:ArkTS UI框架中的文本缩进技巧
harmonyos