vue3加ts实现WebSocket获取值
时间: 2025-01-24 20:16:36 浏览: 53
### 实现 WebSocket 通信与 TypeScript 集成
为了在 Vue 3 项目中使用 TypeScript 实现 WebSocket 通信并获取数据,可以采用 `socket.io-client` 库来简化操作。下面展示了创建一个简单的 WebSocket 连接,并处理消息接收的过程。
#### 安装依赖库
首先安装必要的 npm 包:
```bash
npm install socket.io-client @types/socket.io-client
```
这会引入 Socket.IO 的客户端版本及其对应的类型定义文件以便于 TypeScript 支持[^1]。
#### 创建 WebSocket Service
接着,在项目的 src/services 文件夹下新建 websocket.service.ts 文件用于封装 WebScoket 功能逻辑:
```typescript
// src/services/websocket.service.ts
import { io, Socket } from 'socket.io-client';
class WebSocketService {
private socket: Socket;
constructor(private url: string) {}
connect(): void {
this.socket = io(this.url);
// 监听连接状态变化事件
this.socket.on('connect', () => console.log('Connected'));
this.socket.on('disconnect', () => console.log('Disconnected'));
// 处理服务器发送的消息
this.socket.on('message', (data: any) => {
console.log(`Received message: ${JSON.stringify(data)}`);
});
}
sendMessage(message: object): void {
this.socket.emit('message', message);
}
}
export default new WebSocketService('/ws');
```
上述代码实现了基本的 WebSocket 连接建立、断开监听以及消息收发功能。
#### 组件内集成 WebSocket
最后一步是在组件内部通过 Composition API 或 Options API 来访问这个服务实例并与之交互。这里给出基于 Composition API 的例子:
```typescript
<template>
<div id="app">
<!-- UI Elements -->
</div>
</template>
<script lang="ts">
import { defineComponent, onMounted, ref } from 'vue';
import webSocketService from '@/services/websocket.service';
export default defineComponent({
setup() {
const messages = ref<string[]>([]);
function handleNewMessage(msg: string){
messages.value.push(msg);
};
onMounted(() => {
webSocketService.connect();
// 订阅来自 server 的新消息通知
webSocketService.socket.on('new_message', msg => handleNewMessage(msg));
// 发送测试消息给 server
setTimeout(() => {
webSocketService.sendMessage({ text: "Hello Server!"});
}, 2000);
});
return {
messages,
};
},
});
</script>
```
这段脚本展示了如何初始化 WebSocket 连接并在页面加载完成后订阅特定类型的广播消息;同时也示范了怎样向服务器端推送一条新的聊天记录作为示例。
阅读全文
相关推荐



















