OpenHarmony网络通信-socket-io

简介

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

效果展示

下载安装

ohpm install @ohos/socketio 

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

使用说明

  1. 导入依赖库
import { client_socket } from '@ohos/socketio';
  1. 初始化socket.io客户端
client: client_socket = new client_socket();
  1. 设置监听事件
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. 连接服务器
this.client.connect(uri) //uri: socket.io服务端地址
  1. 设置用户消息监听以及用户加入离开监听
  • 监听事件实现
on_user_left_listener(event_json: string): void {
	//回调数据处理
}
  • 设置监听
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. 登录服务器,并设置登录成功回调
this.client.emit("add user", username, this.on_emit_callback.bind(this));
  1. 发送消息并设置发送消息监听
this.client.emit("new message", message, this.on_emit_callback);
  1. 关闭服务器链接并清理监听事件
this.client.socket_close();
this.client.clear_socket_listeners();

接口说明

  • 初始化客户端
client: client_socket = new client_socket();
  • 设置客户端监听器
set_open_listener(on_open: () => void)
  • 设置客户端失败监听器
set_fail_listener(on_fail: () => void)
  • 设置客户端正在重新连接监听器
set_reconnecting_listener(on_reconnecting: () => void)
  • 设置客户端重新连接监听器
set_reconnect_listener(on_reconnect: () => void)
  • 设置客户端关闭监听器
set_close_listener(on_close: (reason: string) => void)
  • 设置socket打开监听
set_socket_open_listener(on_socket_open: (nsp: string) => void)
  • 设置socket关闭监听
set_socket_close_listener(on_socket_close: (nsp: string) => void)
  • 连接服务器
connect(uri: string)
  • 清楚所有监听器
clear_con_listeners()
  • 清楚所有socket监听器
clear_socket_listeners()
  • 设置重连次数
set_reconnect_attempts(attempts: number)
  • 设置重新连接尝试的延迟时间
set_reconnect_delay(millis: number)
  • 设置重新连接的最大延迟。
set_reconnect_delay_max(millis: number)
  • 关闭连接
close()
  • 同步关闭
sync_close()
  • 判断是否打开
opened(): boolean
  • 获取sessionID
get_sessionid(): string
  • 注册一个新的响应服务器事件的事件处理器
on(event_name: string, on_event_listener: (event_json: string) => void)
  • 设置socket监听关闭
socket_close()
  • 设置错误监听
on_error(on_error_listener: (message: string) => void)
  • 关闭错误监听
off_error()
  • 通过提供的name事件名称向socket标志发送事件
    说明: 响应服务器用来确认消息的应答
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
  1. Linux环境无需执行该步骤,如果是windows环境下,代码下载完成后合入OHOS适配的代码,cd 进入到socketio/library/src/main/cpp/thirdModule 目录下,执行 modify.sh 脚本,将本目录下的 patch 文件合入到 socket.io-client-cpp 源码中。
  2. 开始编译项目。

约束与限制

在下述版本验证通过:

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

相关推荐

  1. Socket网络通信流程

    2024-04-23 16:18:04       30 阅读
  2. 网络通信(8)-Socket介绍

    2024-04-23 16:18:04       55 阅读
  3. 网络通信Socket的简单案例

    2024-04-23 16:18:04       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 16:18:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 16:18:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 16:18:04       82 阅读
  4. Python语言-面向对象

    2024-04-23 16:18:04       91 阅读

热门阅读

  1. Uni-App 生命周期

    2024-04-23 16:18:04       32 阅读
  2. Vue 动态加载全局样式css(切换ui主题方案)

    2024-04-23 16:18:04       39 阅读
  3. jupyter notebook用不了multiporcessing的问题

    2024-04-23 16:18:04       28 阅读
  4. Centos 7 安装 RocketMQ 5.14(保姆级)

    2024-04-23 16:18:04       34 阅读
  5. 鼠标手辅助器

    2024-04-23 16:18:04       35 阅读
  6. 第24篇 python基础

    2024-04-23 16:18:04       31 阅读
  7. 安装Python包常用的国内镜像源

    2024-04-23 16:18:04       28 阅读
  8. 宝塔手动安装grafana

    2024-04-23 16:18:04       29 阅读
  9. Flowable学习笔记一:初识Flowable

    2024-04-23 16:18:04       37 阅读