@bams-app/websocket
websocket封装 - Vue3版本
3,053
| Install | |
|---|---|
npm install @bams-app/websocket |
|
| Latest Version: | 0.2.1 |
| Vue: | 3 |
| Last Updated: | Oct 10, 2026 |
| Links: | npm |
Maintainer: liuzewei1990
@work/websocket-vue3
websocket封装 - Vue3版本
安装
npm install @work/websocket-vue3
使用
全局注册
import { createApp } from "vue";
import App from "./App.vue";
import workWebsocketVue3 from "@work/websocket-vue3";
const app = createApp(App);
// 配置websocket连接
app.use(workWebsocketVue3, "ws://localhost:8080/ws", {
reconnection: true,
reconnectionDelay: 1000,
heartCheckTime: 30000,
heartCheckMsg: "ping"
});
app.mount("#app");
组件使用
基础用法
<template>
<use-websocket :socketParams="params" @message="handleMessage">
<template #default="{ valMap }">
<div>{{ valMap }}</div>
</template>
</use-websocket>
</template>
<script setup>
import { ref } from "vue";
const params = ref({
type: "hs",
field: "real_point_data",
keys: ["key1", "key2"]
});
const handleMessage = (data) => {
console.log("收到消息:", data);
};
</script>
带Keys的用法
<template>
<use-ws :keys="keys" :interval="'2'" @message="handleMessage">
<template #default="{ valMap }">
<div>{{ valMap }}</div>
</template>
</use-ws>
</template>
<script setup>
import { ref } from "vue";
const keys = ref(["key1", "key2", "key3"]);
const handleMessage = (data) => {
console.log("收到消息:", data);
};
</script>
组件使用(Options API)
<template>
<div>{{ message }}</div>
</template>
<script>
export default {
data() {
return {
message: ""
};
},
sockets: {
onmessage(data) {
this.message = data;
}
},
methods: {
sendMessage() {
this.$socketSend({
type: "hs",
field: "real_point_data",
keys: ["key1"]
});
}
}
};
</script>
组件使用(Composition API + defineOptions)
<template>
<div>{{ message }}</div>
</template>
<script setup>
import { ref } from "vue";
import { getCurrentInstance } from "vue";
const message = ref("");
// 使用defineOptions定义sockets选项
defineOptions({
sockets: {
onmessage(data) {
message.value = data;
}
}
});
// 发送消息
const sendMessage = () => {
const vm = getCurrentInstance()?.proxy;
vm?.$socketSend({
type: "hs",
field: "real_point_data",
keys: ["key1"]
});
};
</script>
全局方法
$connectWebsocket
手动连接websocket
this.$connectWebsocket("ws://localhost:8080/ws", {
reconnection: true
});
$disconnectWebsocket
手动断开websocket
this.$disconnectWebsocket();
$socketSend
发送消息
this.$socketSend({
type: "hs",
field: "real_point_data",
keys: ["key1"]
});
配置项
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| reconnection | Boolean | true | 是否自动重连 |
| reconnectionDelay | Number | 1000 | 重连间隔时间(ms) |
| heartCheck | Boolean | true | 是否开启心跳检测 |
| heartCheckTime | Number | 30000 | 心跳检测间隔时间(ms) |
| heartCheckMsg | String | 'ping' | 心跳检测消息 |
| maxReconnectionAttempts | Number | Infinity | 最大重连次数 |
事件
| 事件名 | 说明 | 参数 |
|---|---|---|
| open | 连接成功时触发 | event |
| message | 收到消息时触发 | data, event |
| error | 发生错误时触发 | event |
| close | 连接关闭时触发 | event |
与Vue2版本的区别
- 保持了Vue2的核心API:继续使用
sockets选项和$socketSend方法,确保代码迁移的平滑性 - 支持Vue3的Composition API:同时提供Options API和Composition API两种使用方式
- 组件注册方式:改为Vue3的全局注册方式
- 生命周期钩子:只使用Vue3的
beforeUnmount钩子,不再支持Vue2的beforeDestroy - 兼容性:仅兼容Vue3,不再支持Vue2
License
ISC
Related Packages
Version History
| Version | Released | License |
|---|---|---|
| 0.2.1 | ||
| 0.2.0 | ||
| 0.1.3 | ||
| 0.1.2 | ||
| 0.1.0 | ||
| 0.0.8 | ||
| 0.0.7 | ||
| 0.0.2 | ||
| 0.0.1 |
Pre-releases (1)
| Version | Released | License |
|---|---|---|
| 0.2.0-beta.1 |