vue-页面使用websocket建立连接用于测试

前言

  • websocket双向通讯在项目中经常使用,但一般都是封装成第三方包,登录,退出建立连接。

  • 这样使用是合理,但不便于测试,其实在.vue页面通过new方式可以直接使用websocket。

  • 在页面实例加载完成之后连接websocket,在组件销毁时候断开websocket连接。

  • 注意具体情况要跟后端对接,比如唯一值(比如token),是不是一对一发,还是一对多发(链表)。

细节-websocket方法拆解

  • 通过new WebSocket来获取websocket实例,在页面实例加载完毕建立连接

  • 实例.onopen(地址)- 在页面实例加载完毕建立连接

  • 实例.onclose - 在页面销毁之前销毁websocket实例

  • 实例.onmessage(数据)- 后端使用send发送给前端时候就会触发这个函数方法(带参数)

  • 实例.onerror - 在websocket断开连接,连接错误时就会触发这个函数方法

  • 实例.send(数据)- 向后端发送数据-后端同样用onmessage接收到数据

  • send方法发送数组对象数据时,需要转成字符串形式( JSON.stringify(数据))。

代码如下

html 复制代码
<template>
  <div class="app-container">
    <el-input
      placeholder="请选择日期"
      suffix-icon="el-icon-edit-outline"
      v-model="messagedata"
      style="width: 400px; margin: 0 10px"
    >
    </el-input>
    <el-button type="primary" @click="init">建立连接</el-button>
    <el-button type="success" @click="send">发送信息</el-button>
    <el-button type="info" @click="close">断开连接</el-button>
  </div>
</template>

<script>
import store from "@/store";
export default {
  data() {
    return {
      url: "ws://192.168.2.25:48081/websocket/message",
      ws: null,
      // 推送消息
      messagedata: "",
    };
  },
  created() {},
  mounted() {},
  methods: {
    init() {
      if (typeof WebSocket === "undefined") {
        this.$modal.msgError("您的浏览器不支持WebSocket");
        return;
      } else {
        const userId = store.getters.userId;
        // 实例化socket
        this.ws = new WebSocket(this.url + "?userId=" + userId);
        // 监听socket连接
        this.ws.onopen = this.open;
        // 监听socket错误信息
        this.ws.onerror = this.error;
        // 监听socket消息
        this.ws.onmessage = this.getMessage;
      }
    },
    // websocket建立连接
    open() {
      console.log("socket连接成功");
    },
    // websocket错误信息
    error() {
      console.log("连接错误");
    },
    // 接受后端消息
    getMessage(msg) {
      console.log(msg.data);
    },
    // 向后端发送信息
    send() {
      console.log("this.ws", this.ws);
      this.ws.send(this.messagedata);
    },
    // 关闭websocket连接
    close() {
      if (this.ws) {
        this.ws.close();
        this.ws = null;
        console.log("socket已经关闭");
      }
    },
  },
  destroyed() {
    this.close();
  },
};
</script>

<style lang="scss" scoped>
</style>

连接效果图


总结:

经过这一趟流程下来相信你也对 vue-页面使用websocket建立连接用于测试 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

什么不足的地方请大家指出谢谢 -- 風过无痕

相关推荐
XPoet33 分钟前
AI 编程工程化:实战——从 0 到 1 搭建 AI 编程工作流
前端·后端·ai编程
-今昭-1 小时前
Logstash 管理
java·服务器·前端
名字还没想好☜1 小时前
React 用自定义 useDebounce Hook 治好搜索框频繁请求:防抖、竞态取消与卸载清理
前端·javascript·react.js·react·hooks
杉氧1 小时前
Flutter 跨平台多端适配与 Android/iOS 一键自动化打包发布
android·前端·flutter
障碍的枫子1 小时前
xss和CSRF的攻击和防御
前端·xss·csrf
用户921080262861 小时前
3. 给 Bubble 新增一个 Agent Variant
前端
抓不住时间的沙1 小时前
butterfly主题美化,打造属于自己的个性博客
java·开发语言·前端·javascript·node.js·github
kyriewen2 小时前
前端切图仔被 AI 新闻淹死的第 N 天,我用 TRAE Work 定时任务救了自己
前端·人工智能·trae
京东云开发者2 小时前
【全栈实践】第一个 AI Agent 项目:从零搭建 AI 音频创作助手(高级篇)
前端·agent·音视频开发
AbrahamCS2 小时前
从角色协同到可运行图:Graph Engineer 与多智能体编排
前端·人工智能·智能体