首页 > 其他分享 >鸿蒙技术之WebSocket连接详解

鸿蒙技术之WebSocket连接详解

时间:2024-07-01 16:30:25浏览次数:23  
标签:console 鸿蒙 err value 详解 WebSocket 连接 log

WebSocket连接详解

WebSocket是一种在单个TCP连接上提供全双工通信信道的协议,它允许服务器主动向客户端推送数据,非常适合实时通信和数据交换频繁的应用场景。以下是WebSocket连接的详细步骤和知识点:

1. 创建WebSocket对象

首先,需要通过createWebSocket()方法创建一个WebSocket对象。

import { webSocket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

let ws = webSocket.createWebSocket();
2. 连接到服务器

使用connect()方法连接到服务器。连接方式可以是直接连接,也可以通过设置请求头、代理等选项进行连接。

ws.connect(url, (err: BusinessError, value: boolean) => {
  if (!err) {
    console.log("connect success");
  } else {
    console.log("connect fail, err:" + JSON.stringify(err));
  }
});
3. 处理WebSocket事件

WebSocket对象提供了多个事件处理方法,包括:

  • on('open'): 当WebSocket连接成功打开时触发。
  • on('message'): 当接收到服务器发送的消息时触发。
  • on('close'): 当WebSocket连接关闭时触发。
  • on('error'): 当发生错误时触发。

示例代码如下:

ws.on('open', (err: BusinessError, value: Object) => {
  console.log("WebSocket is open now");
});

ws.on('message', (err: BusinessError, value: string | ArrayBuffer) => {
  console.log("Received message: " + value);
});

ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
  console.log("WebSocket is closed, code: " + value.code + ", reason: " + value.reason);
});

ws.on('error', (err: BusinessError) => {
  console.log("Error occurred: " + JSON.stringify(err));
});
4. 发送数据

使用send()方法向服务器发送数据。

ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
  if (!err) {
    console.log("Message sent successfully");
  } else {
    console.log("Failed to send message, error: " + JSON.stringify(err));
  }
});
5. 关闭WebSocket连接

使用close()方法关闭WebSocket连接。可以设置关闭时的错误码和原因。

ws.close((err: BusinessError, value: boolean) => {
  if (!err) {
    console.log("WebSocket closed successfully");
  } else {
    console.log("Failed to close WebSocket, error: " + JSON.stringify(err));
  }
});```

以上步骤和知识点涵盖了WebSocket连接的主要操作,包括连接的建立、数据的发送与接收、事件的处理以及连接的关闭。通过这些步骤,可以实现与服务器之间的双向通信。


标签:console,鸿蒙,err,value,详解,WebSocket,连接,log
From: https://blog.csdn.net/qq_14863717/article/details/140047081

相关文章

  • 【Linux命令详解 - ssh命令】 ssh命令用于远程登录到其他计算机,实现安全的远程管理
    文章标题简介一,参数列表二,使用介绍*1\.连接远程服务器2.使用SSH密钥登录*2.1生成密钥对2.2将公钥复制到远程服务器3.端口转发*3.1本地端口转发3.2远程端口转发4.X11转发5.文件传输与远程命令执行*5.1文件传输*5.1.1从本地向远程......
  • 鸿蒙学习1:ArkTS基础入门
    1变量和常量1.1变量    常见的基础数据类型:    string字符串、number数字、boolean布尔判断。    变量:专门用来存储数据的容器。    语法:let 变量名:数据类型=值。例如:letname:='张三';letprice:number=12.4;letisSucc......
  • 使用Swagger 3注解编写API文档详解
    在现代软件开发中,API文档的编写是至关重要的一环,它不仅能帮助开发者理解和正确使用API,还能提升团队协作效率。Swagger3是一个流行的API文档规范,通过注解的方式可以清晰地定义API的各个方面。本文将深入探讨Swagger3中常用的注解及其使用方法。@OpenAPIDefinition和@Inf......
  • Spring Boot 全局异常捕获机制详解
    在SpringBoot中,全局异常捕获机制是处理RESTHTTP请求时的一个重要功能,它可以确保所有未被捕获的异常都能被统一处理。本文将深入探讨SpringBoot中全局异常捕获的实现,从请求进入到异常处理的全过程。请求处理流程概述请求进入DispatcherServlet:所有HTTP请求首先到达......
  • BEV感知算法:LSS论文与代码详解
    BEV感知算法:LSS论文与代码详解0. 前言最近几年,BEV感知是自动驾驶领域中一个非常热门研究方向,其核心思想是把多路传感器的数据转换到统一的BEV空间中去提取特征,实现目标检测、地图构建等任务。如何把多路相机的数据从二维的图像视角转换到三维的BEV视角?LSS提出一种显示估......
  • DWA(Dynamic Window Approach)局部路径规划算法详解及代码实现
    DWA(Dynamic Window Approach)局部路径规划算法详解及代码实现二、算法原理一句话概况,就是假定机器人当前以若干组容许范围内的速度(差速轮为例:线速度V,角速度W)进行移动,并对这若干组速度进行轨迹计算,得到若干组轨迹,再根据若干条评分机制选择最好的轨迹所对应的速度作为dwa输......
  • 鸿蒙如何打包应用程序
    总结鸿蒙应用程序包之前文章详细讲解了关于三种程序包的内容,现在简单总结一下:1.总结首先需要搞清楚鸿蒙项目的模块Module的分类:Module分为“Ability”和“Library”两种类型HAPHAP:HarmonyAbilityPackage,叫做鸿蒙Ability包。“Ability”类型的Module编译后......
  • Dubbo 协议详解
    Solomon_肖哥弹架构跟大家“弹弹”分布式微服务Dubbo协议详解欢迎点赞,收藏,关注。关注本人的公众号Solomon肖哥弹架构获取更多的惊喜协议的概念协议是两个网络实体进行通信的基础,数据在网络上从一个实体传输到另一个实体,以字节流的形式传递到对端。在这个字节流的......
  • c指针详解(2)--- 指针与数组
    在大致了解了c语言中变量在内存中的分配、存活等方面后,我们再来看看数组在内存中又是如何呈现的。这里我们就只讨论静态数组,动态数组涉及到动态内存分配,这里就不详细展开了。那么什么是静态数组呢?要理解这个数据结构,我们可以将其切分为两个概念:静态与数组。数组:数组其实就是一......
  • Stable Diffusion之最全详解图解
    稳定扩散(StableDiffusion)是指在图论和网络科学领域中,一种基于随机漫步的扩散模型。该模型可以用来描述节点在网络上的扩散过程,例如信息传播、疾病传播等。稳定扩散模型的基本思想是,节点在网络上随机选择邻居节点进行转移,转移概率与节点之间的连接强度相关。具体来说,稳定扩散......