写点什么

鸿蒙 WebSocket 的使用竟如此简单

作者:龙儿筝
  • 2025-03-13
    上海
  • 本文字数:1480 字

    阅读完需:约 5 分钟

鸿蒙WebSocket的使用竟如此简单

使用 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)); }});
复制代码


发布于: 刚刚阅读数: 3
用户头像

龙儿筝

关注

还未添加个人签名 2024-10-27 加入

还未添加个人简介

评论

发布
暂无评论
鸿蒙WebSocket的使用竟如此简单_鸿蒙_龙儿筝_InfoQ写作社区