<template> <div class="webSocket-container"> <el-row :gutter="20"> <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> <el-alert type="success" :closable="false"> webSocket连接{{ status }}! </el-alert> <br /> <el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form-item label="地址"> <el-input v-model="url" disabled></el-input> </el-form-item> <el-form-item label="消息" prop="message"> <el-input v-model="form.message"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submit">发送消息</el-button> </el-form-item> <el-form-item label="返回信息汇总"> {{ data }} </el-form-item> </el-form> </el-col> </el-row> </div> </template> <script> export default { name: "WebSocket", components: {}, data() { return { url: "ws://123.207.136.134:9010/ajaxchattest", webSocket: null, data: [], status: "", form: { message: null }, rules: { message: [{ required: true, message: "请输入消息", trigger: "blur" }], }, }; }, created() { this.init(); }, destroyed() { this.webSocket.close(); }, methods: { submit() { this.$refs["form"].validate((valid) => { if (valid) { this.send(this.form.message); } else { return false; } }); }, init() { const wsuri = this.url; this.webSocket = new WebSocket(wsuri); this.webSocket.onmessage = this.onmessage; this.webSocket.onopen = this.onopen; this.webSocket.onerror = this.onerror; this.webSocket.onclose = this.onclose; }, onopen() { this.status = "成功"; }, onerror() { this.status = "失败"; this.initWebSocket(); }, onmessage({ data }) { //截掉测试webSocket地址广告 this.data.push(data.substring(0, data.length - 66)); }, send(Data) { this.webSocket.send(Data); }, onclose(e) { this.status = "断开"; }, }, }; </script>