写点什么

鸿蒙 WebSocket 的使用竟如此简单

  • 2025-03-14
    福建
  • 本文字数:1536 字

    阅读完需:约 5 分钟

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

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


websocket 支持心跳检测机制,在客户端和服务端建立 WebSocket 连接之后,每间隔一段时间会客户端会发送 Ping 帧给服务器,服务器收到后应立即回复 Pong 帧。


接口说明


WebSocket 连接功能主要由 webSocket 模块提供。使用该功能需要申请 ohos.permission.INTERNET 权限。具体接口说明如下


  • createWebSocket():创建一个 WebSocket 连接

  • connect():根据 URL 地址,建立一个 WebSocket 连接

  • send():通过 WebSocket 连接发送数据

  • close():关闭 WebSocket 连接

  • on(type: 'open'):订阅 WebSocket 的打开事件

  • off(type: 'open'):取消订阅 WebSocket 的打开事件

  • on(type: 'message'):订阅 WebSocket 的接收到服务器消息事件

  • off(type: 'message'):取消订阅 WebSocket 的接收到服务器消息事件

  • on(type: 'close'):订阅 WebSocket 的关闭事件

  • off(type: 'close'):取消订阅 WebSocket 的关闭事件

  • on(type: 'error'):订阅 WebSocket 的 Error 事件

  • off(type: 'error'):取消订阅 WebSocket 的 Error 事件


开发步骤


  1. 导入需要的 webSocket 模块

  2. 创建一个 WebSocket 连接,返回一个 WebSocket 对象

  3. (可选)订阅 WebSocket 的打开、消息接收、关闭、Error 事件

  4. 根据 URL 地址,发起 WebSocket 连接

  5. 使用完 WebSocket 连接之后,主动断开连接


示例代码


import { webSocket } from '@kit.NetworkKit';import { BusinessError } from '@kit.BasicServicesKit';
let defaultIpAddress = "ws://";let ws = webSocket.createWebSocket();ws.on('open', (err: BusinessError, value: Object) => { console.log("on open, status:" + JSON.stringify(value)); // 当收到on('open')事件时,可以通过send()方法与服务器进行通信 ws.send("Hello, server!", (err: BusinessError, value: boolean) => { if (!err) { console.log("Message send successfully"); } else { console.log("Failed to send the message. Err:" + JSON.stringify(err)); } });});ws.on('message', (err: BusinessError, value: string | ArrayBuffer) => { console.log("on message, message:" + value); // 当收到服务器的`bye`消息时(此消息字段仅为示意,具体字段需要与服务器协商),主动断开连接 if (value === 'bye') { ws.close((err: BusinessError, value: boolean) => { if (!err) { console.log("Connection closed successfully"); } else { console.log("Failed to close the connection. Err: " + JSON.stringify(err)); } }); }});ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => { console.log("on close, code is " + value.code + ", reason is " + value.reason);});ws.on('error', (err: BusinessError) => { console.log("on error, error:" + JSON.stringify(err));});ws.connect(defaultIpAddress, (err: BusinessError, value: boolean) => { if (!err) { console.log("Connected successfully"); } else { console.log("Connection failed. Err:" + JSON.stringify(err)); }});
复制代码


文章转载自:龙儿筝

原文链接:https://www.cnblogs.com/zhaloe/p/18769663

体验地址:http://www.jnpfsoft.com/?from=001YH

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
鸿蒙WebSocket的使用竟如此简单_网络协议_不在线第一只蜗牛_InfoQ写作社区