介绍
@ohos.net.webSocket (WebSocket连接)
说明:
本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
使用WebSocket建立服务器与客户端的双向连接,需要先通过createWebSocket方法创建WebSocket对象,然后通过connect方法连接到服务器。 当连接成功后,客户端会收到open事件的回调,之后客户端就可以通过send方法与服务器进行通信。 当服务器发信息给客户端时,客户端会收到message事件的回调。当客户端不要此连接时,可以通过调用close方法主动断开连接,之后客户端会收到close事件的回调。
导包
import webSocket from '@ohos.net.webSocket';
测试代码
export function testWebsocket() {
let defaultIpAddress = "ws://192.168.110.1:8765";
let ws = webSocket.createWebSocket();
ws.on('open', (err: BusinessError, value: Object) => {
if (err != undefined) {
console.log(JSON.stringify(err));
return;
}
// 当收到on('open')事件时,可以通过send()方法与服务器进行通信
ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
if (!err) {
console.log("send success");
} else {
console.log("send fail, err:" + JSON.stringify(err));
}
});
});
ws.on('message', (err: BusinessError, data: Object) => {
console.log("on message, message:" + data);
// 当收到服务器的`bye`消息时(此消息字段仅为示意,具体字段需要与服务器协商),主动断开连接
if (data.toString() === 'bye') {
ws.close((err: BusinessError, value: boolean) => {
if (!err) {
console.log("close success");
} else {
console.log("close fail, err is " + 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("connect success");
} else {
console.log("connect fail, err:" + JSON.stringify(err));
}
ws.close((err: BusinessError) => {
if (!err) {
console.log("close success");
} else {
console.log("close fail, err is " + JSON.stringify(err));
}
});
});
}
测试页面代码
import { testWebsocket } from '../common/websocket'
@Entry
@Component
struct SocketTest {
build() {
Row() {
Column() {
Button('websocket test')
.onClick(()=>{
testWebsocket()
})
}
.width('100%')
}
.height('100%')
}
}
测试成功
服务器端代码使用python编写
python安装第三方包
pip install websockets
def webSocketServer():
import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
print(f"Received message: {message}")
await websocket.send(f"Echo: {message}")
start_server = websockets.serve(echo, "192.168.110.1", 8765)
print('start websocket......')
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()