回车发送数据,模拟服务器发送数据
效果图:
源码:
<template>
<div>
<h1>WebSocket 实时数据</h1>
<input type="text" v-model="ipt" @keyup.enter="sendMessage(ipt)">
<div v-if="message">
<h3>接收到的数据:</h3>
<pre>{{ message }}</pre>
</div>
<div v-else>
<p>等待 WebSocket 消息...</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
ipt:'',
ws: null, // WebSocket 实例
message: null, // 接收到的消息
isConnected: false, // 是否已连接
};
},
methods: {
// 初始化 WebSocket 连接
initWebSocket() {
const wsUrl = 'ws://124.222.224.186:8800'; // WebSocket 服务器 URL
this.ws = new WebSocket(wsUrl);
// 连接打开时的回调
this.ws.onopen = () => {
console.log('WebSocket 已连接');
this.isConnected = true;
};
// 接收到消息时的回调
this.ws.onmessage = (event) => {
console.log('收到消息:', event.data);
this.message = event.data.slice(19); // 更新接收到的消息
};
// 连接关闭时的回调
this.ws.onclose = () => {
console.log('WebSocket 连接关闭');
this.isConnected = false;
};
// 连接错误时的回调
this.ws.onerror = (error) => {
console.error('WebSocket 错误:', error);
};
},
// 发送消息到 WebSocket 服务器
sendMessage(message) {
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
this.ws.send(message);
console.log('发送消息:', message);
} else {
console.log('WebSocket 连接未开启');
}
},
},
// Vue 生命周期钩子
mounted() {
// 组件挂载时初始化 WebSocket 连接
this.initWebSocket();
},
beforeDestroy() {
// 在组件销毁之前,关闭 WebSocket 连接
if (this.ws) {
this.ws.close();
console.log('WebSocket 连接已关闭');
}
},
};
</script>
<style scoped>
h1 {
color: #333;
}
pre {
background-color: #f4f4f4;
padding: 10px;
border-radius: 5px;
}
</style>