前言
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,于 2011 年被 IETF 定为标准 RFC 6455,并由 RFC7936 补充规范。WebSocket API 也被 W3C 定为标准。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。WebSocket 与 Http 相比具有更强的实时性和压缩效果、更好的二进制支持、较少的控制开销,并能够保持连接状态。
WebSocket 介绍
在 OpenHarmony 中,WebSocket 连接功能主要由 @ohos.net.webSocket 模块提供。使用该功能需要申请 ohos.permission.INTERNET 权限。
接口说明
使用场景介绍
要实现 WebSocket 建立服务器与客户端的双向连接,需要先通过 createWebSocket()方法创建 WebSocket 对象,然后通过 connect()方法连接到服务器。当连接成功后,客户端会收到 open 事件的回调,之后客户端就可以通过 send()方法与服务器进行通信。当服务器发信息给客户端时,客户端会收到 message 事件的回调。当客户端不要此连接时,可以通过调用 close()方法主动断开连接,之后客户端会收到 close 事件的回调。若在上述任一过程中发生错误,客户端会收到 error 事件的回调。
开发步骤
●导入 @ohos.net.webSocket 模块
●创建 WebSocket 对象
●(可选)订阅 WebSocket 的打开、消息接收、关闭、Error 事件
●根据 URL 地址,发起 WebSocket 连接,与服务器进行通信
●使用完 WebSocket 连接之后,主动断开连接
WebSocket 连接示例
目标
使用 webSocket 模块相关接口与服务器进行双向通信
开发环境
示例开发环境:
1.IDE: DevEco Studio 3.0 Release(build:3.0.0.993)
2.SDK: Api Version9
3.开发模型:Stage
具体实现
创建工程
打开 DevEco Studio,创建 SDK 版本为 API9、模型为 Stage 的 OpenHarmony 项目。工程目录结构如下:
配置权限
在工程中的 module.json5 文件中配置 ohos.permission.INTERNET 权限。
"abilities": [
{
...
...
}
],
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
包装 WebSocket 接口
在 ets/service 目录下创建 SocketService.ets 文件。为了方便在 UI 页面中调用 WebSocket 相关的功能,在该文件中定义 SocketService 类对 WebSocket 相关接口进行包装。
SocketService.ets:
import webSocket from '@ohos.net.webSocket';
import Logger from '../util/logger'
const TAG = "WebSocketDemo"
export class SocketService {
private socket: webSocket.WebSocket ;
private messageCallback: MessageCallback;
constructor() {
this.createWebSocket();
this.onOpen();
this.onMessage();
this.onCl