鸿蒙开发网络管理:【@ohos.net.webSocket (WebSocket连接)】

WebSocket连接

 说明:  本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

使用WebSocket建立服务器与客户端的双向连接,需要先通过[createWebSocket]方法创建[WebSocket]对象,然后通过[connect]方法连接到服务器。当连接成功后,客户端会收到[open]事件的回调,之后客户端就可以通过[send]方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到[message]事件的回调。当客户端不要此连接时,可以通过调用[close]方法主动断开连接,之后客户端会收到[close]事件的回调。

若在上述任一过程中发生错误,客户端会收到[error]事件的回调。

导入模块

import webSocket from '@ohos.net.webSocket';

完整示例

import webSocket from '@ohos.net.webSocket';var defaultIpAddress = "ws://";
let ws = webSocket.createWebSocket();
ws.on('open', (err, value) => {console.log("on open, status:" + value['status'] + ", message:" + value['message']);// 当收到on('open')事件时,可以通过send()方法与服务器进行通信ws.send("Hello, server!", (err, value) => {if (!err) {console.log("send success");} else {console.log("send fail, err:" + JSON.stringify(err));}});
});
ws.on('message', (err, value) => {console.log("on message, message:" + value);// 当收到服务器的`bye`消息时(此消息字段仅为示意,具体字段需要与服务器协商),主动断开连接if (value === 'bye') {ws.close((err, value) => {if (!err) {console.log("close success");} else {console.log("close fail, err is " + JSON.stringify(err));}});}
});
ws.on('close', (err, value) => {console.log("on close, code is " + value.code + ", reason is " + value.reason);
});
ws.on('error', (err) => {console.log("on error, error:" + JSON.stringify(err));
});
ws.connect(defaultIpAddress, (err, value) => {if (!err) {console.log("connect success");} else {console.log("connect fail, err:" + JSON.stringify(err));}
});

webSocket.createWebSocket

createWebSocket(): WebSocket

创建一个WebSocket,里面包括建立连接、关闭连接、发送数据和订阅/取消订阅WebSocket连接的打开事件、接收到服务器消息事件、关闭事件和错误事件。

系统能力:SystemCapability.Communication.NetStack

返回值:

类型说明
[WebSocket]返回一个WebSocket对象,里面包括connect、send、close、on和off方法。

示例:

let ws = webSocket.createWebSocket();

WebSocket

在调用WebSocket的方法前,需要先通过[webSocket.createWebSocket]创建一个WebSocket。

connect

connect(url: string, callback: AsyncCallback): void

根据URL地址,建立一个WebSocket连接,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring建立WebSocket连接的URL地址。
callbackAsyncCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err, value) => {if (!err) {console.log("connect success");} else {console.log("connect fail, err:" + JSON.stringify(err))}
});

connect

connect(url: string, options: WebSocketRequestOptions, callback: AsyncCallback): void

根据URL地址和header,建立一个WebSocket连接,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring建立WebSocket连接的URL地址。
optionsWebSocketRequestOptions参考[WebSocketRequestOptions]。
callbackAsyncCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, {header: {"key": "value","key2": "value2"}
}, (err, value) => {if (!err) {console.log("connect success");} else {console.log("connect fail, err:" + JSON.stringify(err))}
});

connect

connect(url: string, options?: WebSocketRequestOptions): Promise

根据URL地址和header,建立一个WebSocket连接,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
urlstring建立WebSocket连接的URL地址。
optionsWebSocketRequestOptions参考[WebSocketRequestOptions]。

返回值:

类型说明
Promise以Promise形式返回建立连接的结果。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
let promise = ws.connect(url);
promise.then((value) => {console.log("connect success")
}).catch((err) => {console.log("connect fail, error:" + JSON.stringify(err))
});

send

send(data: string | ArrayBuffer, callback: AsyncCallback): void

通过WebSocket连接发送数据,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
datastringArrayBuffer 8+
callbackAsyncCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err, value) => {ws.send("Hello, server!", (err, value) => {if (!err) {console.log("send success");} else {console.log("send fail, err:" + JSON.stringify(err))}});
});

send

send(data: string | ArrayBuffer): Promise

通过WebSocket连接发送数据,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
datastringArrayBuffer 8+

返回值:

类型说明
Promise以Promise形式返回发送数据的结果。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
ws.connect(url, (err, value) => {let promise = ws.send("Hello, server!");promise.then((value) => {console.log("send success")}).catch((err) => {console.log("send fail, error:" + JSON.stringify(err))});
});

close

close(callback: AsyncCallback): void

关闭WebSocket连接,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
callbackAsyncCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
ws.close((err, value) => {if (!err) {console.log("close success")} else {console.log("close fail, err is " + JSON.stringify(err))}
});

close

close(options: WebSocketCloseOptions, callback: AsyncCallback): void

根据可选参数code和reason,关闭WebSocket连接,使用callback方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
optionsWebSocketCloseOptions参考[WebSocketCloseOptions]。
callbackAsyncCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
ws.close({code: 1000,reason: "your reason"
}, (err, value) => {if (!err) {console.log("close success")} else {console.log("close fail, err is " + JSON.stringify(err))}
});

close

close(options?: WebSocketCloseOptions): Promise

根据可选参数code和reason,关闭WebSocket连接,使用Promise方式作为异步方法。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
optionsWebSocketCloseOptions参考[WebSocketCloseOptions]。

返回值:

类型说明
Promise以Promise形式返回关闭连接的结果。

示例:

let ws = webSocket.createWebSocket();
let url = "ws://"
let promise = ws.close({code: 1000,reason: "your reason"
});
promise.then((value) => {console.log("close success")
}).catch((err) => {console.log("close fail, err is " + JSON.stringify(err))
});

on(‘open’)

on(type: ‘open’, callback: AsyncCallback): void

订阅WebSocket的打开事件,使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘open’:WebSocket的打开事件。
callbackAsyncCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
ws.on('open', (err, value) => {console.log("on open, status:" + value['status'] + ", message:" + value['message']);
});

off(‘open’)

off(type: ‘open’, callback?: AsyncCallback): void

取消订阅WebSocket的打开事件,使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘open’:WebSocket的打开事件。
callbackAsyncCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
let callback1 = (err, value) => {console.log("on open, status:" + value['status'] + ", message:" + value['message']);
}
ws.on('open', callback1);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅
ws.off('open', callback1);

on(‘message’)

on(type: ‘message’, callback: AsyncCallback<string | ArrayBuffer>): void

订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。

 说明:  AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘message’:WebSocket的接收到服务器消息事件。
callbackAsyncCallback<stringArrayBuffer 8+>

示例:

let ws = webSocket.createWebSocket();
ws.on('message', (err, value) => {console.log("on message, message:" + value);
});

off(‘message’)

off(type: ‘message’, callback?: AsyncCallback<string | ArrayBuffer>): void

取消订阅WebSocket的接收到服务器消息事件,使用callback方式作为异步方法。

 说明:  AsyncCallback中的数据可以是字符串(API 6)或ArrayBuffer(API 8)。 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘message’:WebSocket的接收到服务器消息事件。
callbackAsyncCallback<stringArrayBuffer 8+>

示例:

let ws = webSocket.createWebSocket();
ws.off('message');

on(‘close’)

on(type: ‘close’, callback: AsyncCallback<{ code: number, reason: string }>): void

订阅WebSocket的关闭事件,使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘close’:WebSocket的关闭事件。
callbackAsyncCallback<{ code: number, reason: string }>回调函数。

示例:

let ws = webSocket.createWebSocket();
ws.on('close', (err, value) => {console.log("on close, code is " + value.code + ", reason is " + value.reason);
});

off(‘close’)

off(type: ‘close’, callback?: AsyncCallback<{ code: number, reason: string }>): void

取消订阅WebSocket的关闭事件,使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘close’:WebSocket的关闭事件。
callbackAsyncCallback<{ code: number, reason: string }>回调函数。

示例:

let ws = webSocket.createWebSocket();
ws.off('close');

on(‘error’)

on(type: ‘error’, callback: ErrorCallback): void

订阅WebSocket的Error事件,使用callback方式作为异步方法。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘error’:WebSocket的Error事件。
callbackErrorCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
ws.on('error', (err) => {console.log("on error, error:" + JSON.stringify(err))
});

off(‘error’)

off(type: ‘error’, callback?: ErrorCallback): void

取消订阅WebSocket的Error事件,使用callback方式作为异步方法。

 说明:  可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。

系统能力:SystemCapability.Communication.NetStack

参数:

参数名类型必填说明
typestring‘error’:WebSocket的Error事件。
callbackErrorCallback回调函数。

示例:

let ws = webSocket.createWebSocket();
ws.off('error');

WebSocketRequestOptions

建立WebSocket连接时,可选参数的类型和说明。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
headerObject建立WebSocket连接可选参数,代表建立连接时携带的HTTP头信息。参数内容自定义,也可以不指定。

WebSocketCloseOptions

关闭WebSocket连接时,可选参数的类型和说明。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

参数名类型必填说明
codenumber错误码,关闭WebSocket连接时的可选参数,可根据实际情况来填。默认值为1000。
reasonstring原因值,关闭WebSocket连接时的可选参数,可根据实际情况来填。默认值为空字符串(“”)。

close错误码说明

发送给服务端的错误码可以自行定义,下面的列表仅供参考。

系统能力:以下各项对应的系统能力均为SystemCapability.Communication.NetStack。

说明
1000正常关闭
1001服务器主动关闭
1002协议错误
1003无法处理的数据类型
1004~1015保留值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口测试代码和工具

通过python的requests给接口发送请求进行测试 #coding:utf-8 import requests class TestApi(): url_login "https://legend-sit.omodaglobal.com/api/auth/oauth2/token" url_topic_b "https://legend-sit.omodaglobal.com/api/community/topic_b/page?…

Vue71-嵌套(多级)路由

一、需求 二、开发步骤 2-1、编写路由组件 2-2、编写路由规则 2-3、编写路由标签<router-link>、<router-view> 三、小结

计算预卷积特征

当冻结卷积层和训练模型时&#xff0c;全连接层或dense层(vgg.classifier)的输入始终是相同的。为了更好地理解&#xff0c;让我们将卷积块(在示例中为vgg.features块)视为具有了已学习好的权重且在训练期间不会更改的函数。因此&#xff0c;计算卷积特征并保存下来将有助于我们…

阿里云云服务器、ACR镜像服务、容器化实战:搭建企业应用

一、容器化基础知识 华为云免费试用服务器&#xff1a;https://activity.huaweicloud.com/free_test/index.html 阿里云docker容器教程&#xff1a;https://edu.aliyun.com/course/3111900/lesson/341807097 查询ip地址&#xff1a;www.ip138.com 二、容器化搭建企业应用实战 2…

【已解决】Python报错:NameError: name ‘Image‘ is not defined

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

性能评测系列(PT-010):Spring Boot + MySQL,高并发insert

一、测试概述 测试场景 场景编号&#xff1a; PT-010场景描述&#xff1a; Java应用&#xff0c;MySQL单表写测试目的&#xff1a;指定规格、配置、环境下&#xff0c;Java应用数据库简单写场景负载能力评估。&#xff08;不含调优&#xff0c;所测结果未必是最优结果&#x…

软RAID

硬盘 连续空间 无法 扩容 lvm 非连续空间 可以动态扩容 raid 备份&#xff0c; 提高读写性能&#xff0c;不能扩容 raid 是磁盘的集合&#xff0c;按照排列组合的方法不 一&#xff0c;给 raid 去了不同的名字 raid0 raid1 raid5 raid10 什么是 RAID "RAID"…

构建实用的Flutter文件列表:从简到繁的完美演进

前言&#xff1a;为什么我们需要文件列表&#xff1f; 在现代科技发展迅速的时代&#xff0c;我们的电脑、手机、平板等设备里积累了大量的文件&#xff0c;这些文件可能是我们的照片、文档、音频、视频等等。然而&#xff0c;当文件数量增多时&#xff0c;我们如何快速地找到…

驾校预约管理系统

摘 要 随着驾驶技术的普及和交通安全意识的增强&#xff0c;越来越多的人选择参加驾校培训&#xff0c;以获取驾驶执照。然而&#xff0c;驾校管理面临着日益增长的学员数量和繁琐的预约管理工作。为了提高驾校的管理效率和服务质量&#xff0c;驾校预约管理系统成为了必不可少…

微信app支付没上架开通方法

对于许多商家来说&#xff0c;特别是那些经营游戏、商城等拥有自己APP的商家&#xff0c;接入微信支付无疑是一个重要的步骤&#xff0c;它能让用户更方便地进行支付操作&#xff0c;提升购物体验。然而&#xff0c;随着微信支付政策的调整&#xff0c;现在开通APP支付并不像以…

手机照片压缩到20k以内免费,这几款心动软件快收好!

在数字化时代&#xff0c;手机拍照已成为我们记录生活的重要方式之一。然而&#xff0c;高清的照片也意味着占用着越来越多的手机存储空间。如果你正在为手机内存告急而烦恼&#xff0c;那么这几款手机照片压缩神器或许能成为你的救星&#xff01;它们不仅可以将照片轻松压缩至…

【Linux】多线程的相关知识点

一、线程安全 1.1 可重入 VS 线程安全 1.1.1 概念 线程安全&#xff1a;多个线程并发执行同一段代码时&#xff0c;不会出现不同的结果。常见对全局变量或者静态变量进行操作&#xff0c;并且没有锁的保护的情况下&#xff0c;会出现问题。重入&#xff1a;同一个函数被不同…

vue3通过vue-video-player实现视频倍速、默认全屏、拖拽进度条等功能

效果图&#xff1a; 1、场景&#xff1a; js原生的video标签在不同浏览器及不同型号手机上都展示的不一样&#xff0c;一部分没有倍速&#xff0c;一部分没有全屏等功能&#xff0c;为了统一视频播放的交互功能&#xff0c;使用vue-video-player插件来完成&#xff0c;vue-vid…

轻松打造分班查询系统,这个工具助您一臂之力!

新学期伊始&#xff0c;老师们知道该如何快捷制作并发布分班查询系统吗&#xff1f;面对繁杂的学生名单和班级分配&#xff0c;无疑是一项巨大的麻烦。传统的纸质通知效率低下&#xff0c;容易出错&#xff0c;更别提在信息传递过程中可能出现的混乱和误解了。 现在有一个工具可…

【工具推荐】ONLYOFFICE 桌面编辑器 8.1:引入全新功能,提升文档处理体验

ONLYOFFICE 桌面编辑器 8.1 现已发布&#xff1a;功能完善的 PDF 编辑器、幻灯片版式、改进从右至左显示、新的本地化选项等 【工具推荐】ONLYOFFICE 桌面编辑器 8.1&#xff1a;引入全新功能&#xff0c;提升文档处理体验 一、什么是ONLYOFFICE&#xff1f; ONLYOFFICE 是…

Kotlin 中的内联函数

1 inline 内联函数&#xff1a;消除 Lambda 带来的运行时开销。 举例来说&#xff1a; fun main() {val num1 100val num2 80val result num1AndNum2(num1, num2) { n1, n2 ->n1 n2} }fun num1AndNum2(num1: Int, num2: Int, operation: (Int, Int) -> Int): Int …

一个项目学习Vue3---NVM和NPM安装

内容资源下载&#xff1a;关注公众号(资小库)回复vue下载本内容资源 1.Windows安装NVM包管理工具 公众号回复&#xff1a;nvm 获取nvm下载地址 步骤1&#xff1a;删除本机Node.js 设置->应用->安装的应用->搜索node.js->删除 清理目录文件 C:\Program Files…

微型导轨:手术机器人的高精度“骨骼”

微型导轨精度高&#xff0c;摩擦系数小&#xff0c;自重轻&#xff0c;结构紧凑&#xff0c;被广泛应用在医疗器械中&#xff0c;尤其是在手术机器人中的应用&#xff0c;通过手术机器人&#xff0c;外科医生可以远离手术台操纵机器人进行手术。可以说&#xff0c;是当之无愧的…

Unity2D - 碰撞检测及边界检测

1. 地面检测 1.1 地面检测的逻辑及代码 一般情况下&#xff0c;对于手人物进行事件处理或动作处理时&#xff0c;我们需要判定人物是否在地面上&#xff0c;这个时候最好的方式是设定地面碰撞器&#xff0c;只有角色在地面时才可以进行跳跃; 我们可以想象物体的重心向地面延伸…

uniapp或安卓对接扫码枪

背景介绍 最近老板又随便丢过来一个扫码枪让我研究快速上线&#xff0c;我心想着又是什么串口通信吗&#xff0c;结果发现是usb的&#xff0c;我想着是不是有什么协议&#xff0c;结果直接插上电脑或者手机 均可在输入框直接输入&#xff0c;不用任何的代码编写 但结合了一下…