在vue中使用SockJS和stomp让websocket更加简单

安装依赖

    "sockjs-client": "^1.5.0",
    "stompjs": "^2.3.3",

项目引用

import SockJS from 'sockjs-client'
import Stomp from 'stompjs'
    // websocket
    initWebSocket () {
      this.connect()
      const self = this
      // 断开重连机制,尝试发送消息,捕获异常发生时重连

      this.timer = setInterval(() => {
        try {
          console.log('成功')
        } catch (err) {
          console.log('断线了: ' + err)
          self.connect()
        }
      }, 10000)
    },
    connect () {
      // 连接服务端提供的通信接口,连接以后才可以订阅广播消息和个人消息
      const sock = new SockJS('http://110.61.76.221:8090/monitor')
      // 获取STOMP子协议的客户端对象
      this.stompClient = Stomp.over(sock)
      // const token = sessionStorage.getItem('cookieaccess_token')
      // 向服务器发起websocket连接
      this.stompClient.connect({}, (message) => {
        this.subscribe()
      }, error => {
        this.initWebSocket()
      })
    },
    sendMessage () {  // 发送消息
      this.stompClient.send('/app/chat', {}, JSON.stringify({}))
    },
    // 断开连接
    disconnect () {
      if (this.stompClient !== null) {
        this.stompClient.disconnect()
        console.log('Disconnected')
      }
    },
    subscribe () { // 订阅公告
      const _this = this
      this.stompClient.subscribe('/topic/chat', function (msg) {
        const obj = JSON.parse(msg.body)
      
        }
      })
    },

原生写法

<%@ page language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>

<head>
  <title>Java后端WebSocket的Tomcat实现</title>
</head>
<script src="http://code.jquery.com/jquery-latest.js"></script>

<body>
  Welcome<br /><input id="text" type="text" />
  <button onclick="send()">发送消息</button>
  <br />
  <input id="b" type="text" /> <!-- 这里用于注册不同的clientId, 多个webSocket客户端只能同步收到相同clientId的消息 -->
  <button onclick="connect()">连接</button>
  <hr />
  <button onclick="closeWebSocket()">关闭WebSocket连接</button>
  <hr />
  <div id="message"></div>
</body>

<script type="text/javascript">
  var websocket = null;

  function connect() {
    //判断当前浏览器是否支持WebSocket
    if ('WebSocket' in window) {
      var value = $("#b").val();
      websocket = new WebSocket("ws://localhost:8080/ws/websocket/" + value);
      //连接发生错误的回调方法
      websocket.onerror = function () {
        setMessageInnerHTML("WebSocket连接发生错误");
      };

      //连接成功建立的回调方法
      websocket.onopen = function () {
        setMessageInnerHTML("WebSocket连接成功");
      }

      //接收到消息的回调方法
      websocket.onmessage = function (event) {
        setMessageInnerHTML(event.data);
      }

      //连接关闭的回调方法
      websocket.onclose = function () {
        setMessageInnerHTML("WebSocket连接关闭");
      }

      //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
      window.onbeforeunload = function () {
        closeWebSocket();
      }


    } else {
      alert('当前浏览器 Not support websocket')
    }
  };
  //将消息显示在网页上
  function setMessageInnerHTML(innerHTML) {
    document.getElementById('message').innerHTML += innerHTML + '<br/>';
  }

  //关闭WebSocket连接
  function closeWebSocket() {
    websocket.close();
  }

  //发送消息
  function send() {
    var message = document.getElementById('text').value;
    websocket.send(message);
  }

</script>

</html>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue 3使用stomp-websocket,你可以按照以下步骤进行操作: 1. 首先,你需要安装stompjs和sockjs-client依赖。在你的Vue项目根目录下,打开终端并运行以下命令: ```shell npm install stompjs sockjs-client --save ``` 2. 在你需要使用stomp-websocket的组件,引入stompjs和sockjs-client库。你可以在Vue组件的`<script>`标签添加以下代码: ```javascript import { Stomp } from 'stompjs'; import SockJS from 'sockjs-client'; ``` 3. 接下来,你可以在组件的方法创建和管理stomp客户端连接。例如,在`created`钩子函数,可以添加以下代码: ```javascript created() { const socket = new SockJS('http://localhost:8080/your-websocket-endpoint'); // 替换为你的WebSocket端点URL this.stompClient = Stomp.over(socket); this.stompClient.connect({}, this.onConnect, this.onError); }, methods: { onConnect() { // 连接成功后的处理逻辑 }, onError(error) { // 连接失败后的处理逻辑 } } ``` 4. 在`onConnect`方法,你可以订阅并接收消息。例如: ```javascript onConnect() { this.stompClient.subscribe('/your-destination', (message) => { // 处理收到的消息 console.log(message.body); }); } ``` 这里的`/your-destination`是你想要订阅的目标地址。 5. 最后,当你不再需要连接时,记得在适当的时候断开连接: ```javascript beforeDestroy() { this.stompClient.disconnect(); } ``` 这样,你就可以在Vue 3使用stomp-websocket了。请注意,上述代码的URL和订阅目标地址需要根据你的实际情况进行修改。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值