HarmonyOS鸿蒙Next中建立本地http服务器和websocket服务器有三方库吗?
HarmonyOS鸿蒙Next中建立本地http服务器和websocket服务器有三方库吗?
如果没有三方库 有没有文档啥的
开发者你好,目前webSocketServer服务端仅支持智慧屏(server端完整示例),不过可以看下下面方案:
-
可以通过 TCP Socket Server 替代。
参考链接:
应用通过 TCP Socket Server 进行数据传输 -
另外可以使用websocketpp三方库实现。
更多关于HarmonyOS鸿蒙Next中建立本地http服务器和websocket服务器有三方库吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
目前没有三方库,可参考这demo进行https://www.cnblogs.com/zhaoylhm/p/18943068
目前没有三方库的。可通过ArkTS调用Native层封装的服务端实现,但开发复杂度较高。假如通过C++层使用net_websocket.h接口实现Native服务端行不行?当然应该得搭配ArkTS层调用
// C++层服务端实现片段
OH_WebSocketClient_Constructor(onOpenCallback, onMessageCallback, ...);
OH_WebSocketClient_AddHeader(client, header);
你有做过类的的吗,
【背景知识】 WebSocket主要用于建立服务器与客户端之间的双向通信通道,实时聊天、在线协作等场景中,WebSocket的优势在于它可以减少延迟,提高数据传输的速度和效率,非常适合需要频繁更新数据的场景。
【解决方案】 WebSocket使用步骤:
- 需要先通过createWebSocket方法创建WebSocket对象,然后通过connect方法连接到服务器。
- 当连接成功后,客户端会收到open()事件的回调,之后客户端就可以通过send()方法与服务器进行通信。
- 当服务器发信息给客户端时,客户端会收到on(‘message’)事件的回调。
- 当客户端不要此连接时,可以通过调用close()方法主动断开连接,之后客户端会收到close()事件的回调。
若在上述任一过程中发生错误,客户端会收到on(‘error’)事件的回调。
客户端代码示例:
import webSocket from '@ohos.net.webSocket';
import { BusinessError } from '@ohos.base';
@Entry
@Component
struct webSock {
ws: webSocket.WebSocket = webSocket.createWebSocket();
defaultIpAddress = "ws://"; // 对应的Ip地址
aboutToAppear(): void {
this.ws.on('open', (err: BusinessError, value: Object) => {
if (err != undefined) {
console.error(`${err}`);
return;
}
// 当收到on('open')事件时,可以通过send()方法与服务器进行通信
this.ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
if (!err) {
console.info("send success");
} else {
console.error(`send fail, err:${err}`);
}
});
});
this.ws.on('message', (error: BusinessError, value: string | ArrayBuffer) => {
console.info("on message, message:" + value);
// 当收到服务器的bye消息时(此消息字段仅为示意,具体字段需要与服务器协商),主动断开连接
if (value === 'bye') {
this.ws.close((err: BusinessError, value: boolean) => {
if (!err) {
console.info("close success");
} else {
console.error(`close fail, err is ${err}`);
}
});
}
})
this.ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
console.info("on close, code is " + value.code + ", reason is " + value.reason);
})
this.ws.on('error', (err: BusinessError) => {
console.error(`on error, error: ${err}`);
})
this.ws.connect(this.defaultIpAddress, (err: BusinessError, value: boolean) => {
if (!err) {
console.info("connect success");
} else {
console.error(`connect fail, err:${err}`);
}
})
}
build() {
Button('发消息').onClick(() => {
this.ws.send("我发个消息")
})
}
}
服务端代码示例:
var ws = require("nodejs-websocket")
// 创建一个服务server,每次用户链接,函数就会被执行,并给当前用户创建一个connect对象
var server = ws.createServer(connect => {
// 每当接收到用户传递过来的数据,就会触发text事件,并传入数据
connect.on("text", data => {
// 给用户响应数据
// connect.sendText(data.toUpperCase()+"!!!") //转换大小写并并拼接字符串
connect.send(data)
console.info(data)
})
// 监听websocket断开链接
connect.on("close", () => {
console.info("websocket连接断开....")
})
// 监听websocket异常信息
connect.on("error", () => {
console.info("websocket连接异常....")
})
})
server.listen(3000, () => {
console.info("websocket running")
})
本地部署http服务:
【解决方案】 HarmonyOS目前没有httpserver的API,推荐使用三方库如@webabcd/harmony-httpserver部署本地http服务器。使用文档及代码示例见链接[@webabcd/harmony-httpserver](https://ohpm.openharmony.cn/#/cn/detail/@webabcd%2Fharmony-httpserver)。
用不了哥,
你好,是哪个用不了啊,websocket服务端吗,
服务端代码示例:
在HarmonyOS Next中,可以使用内置的@ohos.net.http
和@ohos.net.socket
模块来创建本地HTTP服务器和WebSocket服务器,无需依赖第三方库。@ohos.net.http
提供HTTP服务端能力,支持请求处理和响应返回;@ohos.net.socket
支持WebSocket服务端实现,处理双向通信。两者均为ArkTS开发,符合HarmonyOS应用开发规范。
目前HarmonyOS Next暂未提供专门用于构建本地HTTP服务器和WebSocket服务器的第三方库。华为官方文档中推荐使用ArkTS/ArkUI原生能力结合网络API实现相关功能,具体可参考以下路径:
-
HTTP服务器:可通过
@ohos.net.socket
模块创建TCP Socket,在此基础上实现HTTP协议解析与响应。示例代码见网络连接管理开发指南。 -
WebSocket服务器:需基于TCP Socket自主实现WebSocket握手(RFC6455)及数据帧解析。官方提供了WebSocket客户端示例,服务端逻辑需参照协议规范自行实现。
建议关注ArkTS API参考中的网络相关接口,现阶段需通过底层socket能力定制开发。