首页 > 其他分享 >websocket简单使用

websocket简单使用

时间:2023-12-05 15:25:36浏览次数:37  
标签:websocket socket 简单 token 使用 console data log

<template></template>

<script>
import bus from '@/utils/bus'
import config from '@/config/constantconfig';
export default {
  components: {},
  data () {
    return {
      socket: null,
      isDestroyed: false,
      // 最大重连次数
      reconnectTimes: 10,
      // 当前重连次数
      reconnectcurrentTimes: 0
    };
  },
  mounted () {
    this.init()
  },
  destroyed () {
    this.isDestroyed = true
    this.socket.close();
    this.socket = null;
  },
  methods: {
    init () {
      bus.$on('openWebSocket', token => {
        this.openWebSocket(token)
      })
    },
    // 开启websocket
    openWebSocket (token) {
      if (this.socket) return
      if (typeof (WebSocket) == 'undefined') {
        console.log('您的浏览器不支持WebSocket')
        return
      }
      //实现化WebSocket对象,指定要连接的服务器地址与端口  建立连接
      let socketUrl = config.socketUrl + token
      this.socket = new WebSocket(socketUrl)
      //打开事件
      this.socket.onopen = () => {
        console.log('websocket已打开')
      };
      //获得消息事件
      this.socket.onmessage = msg => {
        //发现消息进入    开始处理前端触发逻辑
        this.onmessage(msg.data)
      };
      //关闭事件
      this.socket.onclose = () => {
        console.log('websocket已关闭')
        this.socket = null
        if (!this.isDestroyed) {
          this.reconnectcurrentTimes++
          if (this.reconnectcurrentTimes < this.reconnectTimes) {
            this.openWebSocket(token)
          } else {
            // this.reconnectcurrentTimes = 0
          }
        }
      };
      //发生了错误事件
      this.socket.onerror = () => {
        console.log('websocket发生了错误')
      }
    },
    // 对socket推送的事件进行处理
    onmessage (data) {
      if (!data || data === '连接成功') return
      console.log(data);
      let json = JSON.parse(data)
      switch (json.model) {
        case 1:
        case 7:
          bus.$emit('eventRemind', json)
          break;
        default:
          break;
      }
    }
  },
}
</script>

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

 

标签:websocket,socket,简单,token,使用,console,data,log
From: https://www.cnblogs.com/xhxdd/p/17877343.html

相关文章

  • 如何优雅的使用 Systemd 管理服务
    背景:我们在构建Kubernetes容器化平台时,会在节点上部署各种agent,虽然容器化当道的今天很多程序可以直接采用docker方式进行运行,但我们在整个集群内部仍然大量使用了 systemd 来管理基础服务。不过在使用过程中发现可能出现相关依赖的服务组件异常后导致节点上服务不可用......
  • 使用SpringBoot实现文件上传和下载
    上传文件:1.在`pom.xml`文件中添加依赖:xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot<......
  • 看看一个我怎么想都想不出来的简单东西 学生信息录入
    classStudent:   def__init__(self,name,age,address):       self.name=name       self.age=age       self.address=address#创建一个空列表来存储学生对象students_list=[]#使用for循环录入学生信息foriinrange(2): #你可......
  • systemd使用示例
    [Unit]Description=monitorsg_ai_framework_boxAfter=network.target[Service]User=rootType=forkingExecStart=/data/script/run/start.shExecStop=/data/script/run/stop.shPrivateTmp=trueRestart=always[Install]WantedBy=multi-user.target 1.启动nfs服务systemctl s......
  • Jpa+mybatis混合使用时,jsqlparser一直报错
    net.sf.jsqlparser.statement.insert.Insertcannotbecasttonet.sf.jsqlparser.statement.select.Select解决<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactI......
  • 使用Python发送HTTP请求的最佳实践:让你的代码锐利如刀!
    在当今的数字化时代,使用Python发送HTTP请求已经成为了许多开发人员的日常任务。无论是进行API交互、网页爬取,还是构建网络服务,掌握Python的HTTP请求技巧都至关重要。但是,要想在竞争激烈的编程领域中脱颖而出,你需要掌握一些最佳实践,让你的代码锐利如刀!安装必要的库首先,确保你已经安......
  • 在CPF里使用OpenGL做跨平台桌面应用开发
    CPF是开源的C#跨平台UI框架,支持使用OpenGL来渲染,可以用来硬件加速播放视频或者显示3D模型实现原理其实就是Skia用OpenGL后端,Skia里绑定GLView的OpenGL纹理,将纹理作为Skia的图像混合绘制。在CPF里使用OpenGL,不能选择NetCore3.0和Net4,需要选择Netcore3.1以及之后的版本。Nuget里......
  • 典型的ETL使用场景
    典型的ETL使用场景ETL( Extract,Transform,Load)是一种用于数据集成和数据转换的常用技术。它主要用于从多个数据源中提取数据,对数据进行清洗、转换和整合,最后加载到目标系统中。ETL 的使用场景非常广泛,下面将介绍一些常见的 ETL 使用场景。  数据仓库构建ETL技术可......
  • Native API在HarmonyOS应用工程中的使用指导
     HarmonyOS的应用必须用js来桥接native。需要使用ace_napi仓中提供的napi接口来处理js交互。napi提供的接口名与三方Node.js一致,目前支持部分接口,符号表见ace_napi仓中的libnapi.ndk.json文件。开发流程在DevEco Studio的模板工程中包含使用Native API的默认工程,使用File-......
  • 发明无止境:简单的螺丝钉也有复杂悠久的专利故事?
    今天跟大家分享一个螺丝钉专利的故事。  我们从人类开始就有了连接和固定的需求。  最早期的时候,人类就想到了连接和固定最简单的办法就是用钉子把两个物体连接在一起,最早的时候用的是木钉或者楔子。用木钉和楔子的方式简单粗暴,成本也非常的低,但缺点就是由于木钉本身......