OpenHarmony之WebSocket开发

前言

之前提到过,工作中需要在矿鸿系统中开发应用。没有开发板,只能在Harmony OS模拟机上学习,但是这不影响,之后改下配置就行了。言归正传,本文章要探讨的是,如何进行WebSocket通信。主要是想着以后矿鸿系统的板子,要与我们的机器人通信,选择用WebSocket。之前想过用C++的库,现在想着既然OpenHarmony支持WebSocket通信,那么为了方便起见,就用他也行,下面是一个配置与联通的过程。参考**官方文档**

建立测试工程

  • 我首先建立了一个Native C++ 工程,如下图所示:

//记得添加build-profile.json5 参考**前面的文章**

"externalNativeOptions": {

"path": "./src/main/cpp/CMakeLists.txt",

"arguments": "",

"cppFlags": "",

"abiFilters": [

"arm64-v8a",

"x86_64"

],

}

编写客户端WebSocket代码

  • 既然做测试,主要是看看能不能用,就测试能不能连接即可,按最简单的来
javascript 复制代码
//引入库文件
import { webSocket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
  • 创建一个连接WebSocket服务端的函数
javascript 复制代码
function connectWebSocket()
{
  ws.connect(url, (err: BusinessError, value: boolean) => {
    if (!err) {
      console.info("connect success")
    } else {
      console.error(`connect fail. Code: ${err.code}, message: ${err.message}`)
    }
  });
}
  • 整个文件修改,如下图所示:IP为本机开发电脑的

重新编译

写完代码之后,重新编译一下,会出现如图所示:可以看出需要申请使用Internet网络,不然,就算安装好之后,也不能连接到服务端,因为网络是被拒绝的。

module.json5配置文件修改

添加如下配置

javascript 复制代码
  "requestPermissions": [
    {
      "name": "ohos.permission.INTERNET",
      "usedScene": {
        "abilities": ["EntryAbility"],
        "when": "always"
      }
    }
  ]

在文件中的位置如下图所示:点击"Sync Now",重新编译,刚才的警告就没了

现在就可以了,正常连接服务端了。

编写服务端WebSocket代码

我在Windows中用C#写了个WebSocket服务端,代码如图所示:

联通测试

  • 首先模拟机运行起来,C#服务端运行起来
  • 连接模拟机,上传程序
  • 点击"HelloWorld" 如图所示:连接成功

以上完成后,就可以根据自己的需求增加代码了。

后续

经过学习得知,其实还需要配置系统能力SystemCapability,其实我都做了测试,目前是,配置不配置都可以,但是还是把他写一写,后续可能要用到

  • 请在DevEco Studio工程的模块/src/main目录下,手动创建syscap.json文件。如在entry/src/main目录右键,点击New > File。

之所以为什么是SystemCapability.Communication.NetStack能力,我们可以去查找,自己需要什么样的能力,在**API介绍**的时候有说明。

那就先这样,有新的发现再补充说明

相关推荐
云端漫步19873 小时前
HarmonyOS 互动卡片(Live Form)入门指南:双态架构与场景动效全景解析
华为·架构·harmonyos
記億揺晃着的那天4 小时前
NAS 内网域名访问为什么需要浏览器授权
网络·nginx·js·nas
chunmiao30324 小时前
DeepSeek V4-Pro 正式版上线,API 8月17日起分时调价
网络·安全
迪康Defender6 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
0x537 小时前
Java网络编程(二)
java·服务器·网络
AI领路人.7 小时前
[特殊字符] 用 OpenClaw 实现一个 C++ 复刻版 QuantClaw
websocket·单元测试·discord·rest api·内存占用·c++17
微硬创新7 小时前
老旧产线改造:耐达讯自动化16路4‑20mA转PROFINET的工程实践
人工智能·网络协议·自动化·信息与通信
西安景驰电子9 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
ZGi.ai9 小时前
多模型回答不稳定:路由规则与评测方法
网络·人工智能·大模型评测·多模型·模型路由·zgi·模型网关
80s77710 小时前
独享住宅IP、长效代理ip是什么?有哪些作用?
网络·网络协议·tcp/ip