WebSocket连接详解
WebSocket是一种在单个TCP连接上提供全双工通信信道的协议,它允许服务器主动向客户端推送数据,非常适合实时通信和数据交换频繁的应用场景。以下是WebSocket连接的详细步骤和知识点:
1. 创建WebSocket对象
首先,需要通过createWebSocket()
方法创建一个WebSocket对象。
import { webSocket } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';
let ws = webSocket.createWebSocket();
2. 连接到服务器
使用connect()
方法连接到服务器。连接方式可以是直接连接,也可以通过设置请求头、代理等选项进行连接。
ws.connect(url, (err: BusinessError, value: boolean) => {
if (!err) {
console.log("connect success");
} else {
console.log("connect fail, err:" + JSON.stringify(err));
}
});
3. 处理WebSocket事件
WebSocket对象提供了多个事件处理方法,包括:
on('open')
: 当WebSocket连接成功打开时触发。on('message')
: 当接收到服务器发送的消息时触发。on('close')
: 当WebSocket连接关闭时触发。on('error')
: 当发生错误时触发。
示例代码如下:
ws.on('open', (err: BusinessError, value: Object) => {
console.log("WebSocket is open now");
});
ws.on('message', (err: BusinessError, value: string | ArrayBuffer) => {
console.log("Received message: " + value);
});
ws.on('close', (err: BusinessError, value: webSocket.CloseResult) => {
console.log("WebSocket is closed, code: " + value.code + ", reason: " + value.reason);
});
ws.on('error', (err: BusinessError) => {
console.log("Error occurred: " + JSON.stringify(err));
});
4. 发送数据
使用send()
方法向服务器发送数据。
ws.send("Hello, server!", (err: BusinessError, value: boolean) => {
if (!err) {
console.log("Message sent successfully");
} else {
console.log("Failed to send message, error: " + JSON.stringify(err));
}
});
5. 关闭WebSocket连接
使用close()
方法关闭WebSocket连接。可以设置关闭时的错误码和原因。
ws.close((err: BusinessError, value: boolean) => {
if (!err) {
console.log("WebSocket closed successfully");
} else {
console.log("Failed to close WebSocket, error: " + JSON.stringify(err));
}
});```
以上步骤和知识点涵盖了WebSocket连接的主要操作,包括连接的建立、数据的发送与接收、事件的处理以及连接的关闭。通过这些步骤,可以实现与服务器之间的双向通信。