当前位置:   article > 正文

vue 使用stompjs websocket连接rabbitmq_vue stompjs

vue stompjs

1. 首先确保rabbitmq服务已开启web-stomp

        1.1 登录rabbitmq web控制台

        1.2 在overview目录下 下拉找到Ports and contexts 看列表有没有http/web-stomp

        1.3 如果没有需要开启 window/centos 进入rabbitmq安装目录的bin目录下执行rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq_stomp rabbitmq_web_stomp_examples

        1.4 如果是docker安装需要先rm 容器,然后在启动命令加15674端口 重新启动容器

2.前端部分

        2.1 引入stompjs, npm install stompjs --save

        2.2 前端完整代码

  1. <template>
  2. <div class="page">
  3. <button @click="createConnection">连接MQTT
  4. </button>
  5. <button @click="doSubscribe">订阅主题
  6. </button>
  7. <button @click="doUnSubscribe">取消主题
  8. </button>
  9. <button @click="destroyConnection">断开MQTT
  10. </button>
  11. </div>
  12. </template>
  13. <script>
  14. import Stomp from 'stompjs'; // 引入stompjs 需要先npm install stompjs --save
  15. export default {
  16. data() {
  17. return {
  18. client: null,
  19. options: {
  20. vhost: '/', // rabbitmq的vhost
  21. incoming: 8000, // 心跳包时间,(须大于0,且小于10000,因为服务器可能默认10秒没心跳就会断开)
  22. outgoing: 8000, // 心跳包时间,(须大于0,且小于10000,因为服务器可能默认10秒没心跳就会断开)
  23. account: 'guest', // rabbitmq的账户
  24. pwd: 'guest', // rabbitmq的密码
  25. server: 'ws://192.168.56.10:15674/ws' // ws://rabbitmq的ip:rabbitmq的web-stomp的端口/ws
  26. }
  27. }
  28. },
  29. methods: {
  30. connect(options) {
  31. this.options = { ...this.options, ...options }
  32. const mqUrl = this.options.server // 连接地址
  33. const ws = new WebSocket(mqUrl) // 创建
  34. ws.onclose = close => {
  35. console.log('webSocket关闭', close) // 关闭回调
  36. }
  37. ws.onerror = error => {
  38. console.log('webSocket异常', error) // 异常回调
  39. }
  40. ws.onopen = success => {
  41. console.log('webSocket连接成功', success) // 成功回调
  42. }
  43. this.client = Stomp.over(ws)
  44. this.client.heartbeat.incoming = this.options.incoming
  45. this.client.heartbeat.outgoing = this.options.outgoing
  46. //开始连接
  47. this.client.connect(
  48. this.options.account, // 用户名
  49. this.options.pwd, // 密码
  50. this.onSuccessConnectRabbitmq, // 连接成功时回调
  51. this.onErrorConnectRabbitmq, // 失败时回调
  52. this.options.vhost
  53. );
  54. },
  55. onSuccessConnectRabbitmq() {
  56. console.log('stomp 连接成功!')
  57. // 直接在连接成功的时候就订阅监听user.audit.queue队列 user.audit.queue是rabbitmq里创建的queue名称
  58. this.doSubscribe('user.audit.queue')
  59. },
  60. onErrorConnectRabbitmq(errorMsg) {
  61. console.error(`stomp 断开连接,正在准备重新连接...`, errorMsg)
  62. this.connect(this.options)
  63. },
  64. doSubscribe(queueName) {
  65. this.currentSubscribe = this.client.subscribe(queueName, function (messages) {
  66. console.log('receive:', messages)
  67. console.log('message body', messages.body) // 消息内容主体 json需要自己转
  68. });
  69. },
  70. doUnSubscribe() {
  71. this.currentSubscribe.unsubscribe()
  72. },
  73. createConnection() {
  74. this.connect()
  75. },
  76. destroyConnection() {
  77. this.client.disconnect(() => {
  78. console.log('已关闭rabbitmq连接')
  79. });
  80. },
  81. },
  82. mounted() {
  83. this.connect()
  84. },
  85. };
  86. </script>

3. 后端/rabbitmq操作

        3.1 后端代码操作 直接给队列发消息前端doSubscribe即可收到消息

                3.1.1 rabbitTemplate.convertAndSend(exchange routingkey, message);

        3.2 rabbitmq web控制台操作

                3.2.1 创建exchange、queue, 将queue绑定到exchange, 在publish message直接发送消息验证

        

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/531615
推荐阅读
相关标签
  

闽ICP备14008679号