IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Vue+WebSocket+RabbitMQ 实现页面实时通讯 -> 正文阅读

[网络协议]Vue+WebSocket+RabbitMQ 实现页面实时通讯

1.websocket是一种实时性、全双工通信的HTML5协议。可以用它来实现后台消息的实时获取,例如获取一些司机、乘客地图定位数据等,可代替传统的轮询方式,更加的智能灵巧。

?

2.stomp?是一个简单的面向文本的消息传递协议,利用websocket+stomp 来构建mq连接。

3.首先先安装stompjs。

npm install stompjs

4.定义一个golbal.js文件存放rabbitmq服务器、账号、密码等地址。

/**
 * rabbitmq -dev
 */
export const RMQ_SERVER = '' // mq服务地址
export const RMQ_VIRTUAL_HOST = '' //虚拟主机
export const RMQ_ACCOUNT = '' // 用户名
export const RMQ_PASSWORD = '' // 密码

5.定义一个stomp-client.js文件存放建立rabbitmq连接的代码,利用js class + constructor建立构造方法,对rabbitmq进行基础的封装,就可以在代码中直接引入文件连接rabbitmq、订阅消息。

import Stomp from 'stompjs'
import { RMQ_SERVER, RMQ_VIRTUAL_HOST, RMQ_ACCOUNT, RMQ_PASSWORD, RMQ_ERR_CONNECT_LIMIT } from '@/const/global'
class StompClient {
  // eslint-disable-next-line space-before-function-paren
  constructor(rmqServer, rmqVirtualHost, rmqAccount, rmqPassword) {
    this.subscribes = ''// 订阅信息
    this.client = null
    this.options = {
      vhost: rmqVirtualHost,
      incoming: 10000,
      outgoing: 10000,
      account: rmqAccount,
      pwd: rmqPassword,
      server: `ws://${rmqServer}/ws`
    }
  }
  connect (options) {
    let mqUrl = this.options.server
    let ws = new WebSocket(mqUrl)
    ws.onclose = close => {
      console.log('webSocket关闭', close)
    }
    ws.onerror = error => {
      console.log('webSocket异常', error)
    }
    ws.onopen = success => {
      console.log('webSocket连接成功', success)
    }
    this.client = Stomp.over(ws)
    this.client.heartbeat.incoming = this.options.incoming
    this.client.heartbeat.outgoing = this.options.outgoing
    this.client.debug = null // 关闭控制台调试
    // mq连接
    let onConnect = () => {
      console.log('stomp 连接成功!')
    }
    // mq错误重新进行连接
    let onError = (errorMsg) => {
      console.error(`stomp 断开连接,正在准备重新连接...`, errorMsg)
      this.connect(this.options)
    }
    // 连接
    this.client.connect(this.options.account, this.options.pwd, onConnect, onError, this.options.vhost)
  }
  //消息订阅
  subscribe () {}
  // 关闭mq连接
  closeConnect () {
    this.client.disconnect(() => {
      console.log('已关闭mq连接')
    })
  }
}
export default new StompClient(RMQ_SERVER, RMQ_VIRTUAL_HOST, RMQ_ACCOUNT, RMQ_PASSWORD)

6.在代码中需要开始进行mq连接的代码中引入上面的定义的js文件地址,这次是放在/util文件夹中 ,可自行建立。在需要连接mq的时候执行StompClient.connect()创建连接,在不需要用到的地方取消连接StompClient.closeConnect(),比如:登出时候,可减少资源浪费。

import StompClient from '@/util/stomp-client.js'

export default {
  data () {
    return {
    }
  },
  created () { },
  mounted () {
   //mq连接
    StompClient.connect()
  },
  beforeDestroy () {
    //取消mq连接
    StompClient.closeConnect()
  },

}

7.连接成功,打开控制台 ,打印出如下所示就是连接成功。mq默认会打印出一些自带的控制台消息,内容很多,影响效果,在第5步骤中 this.client.debug = null ,可关闭关闭控制台调试。附上其stomp源码内容(使用npm 加载的stomp代码地址在node_modules文件夹中的stompjs里)。

8.到此mq连接已经完成,使用constructor封装了一个mq连接,方便使用,如果项目简单,不想封装,也可以在代码中直接建立连接。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:52:51  更:2021-10-11 17:54:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:46:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码