vue使用SockJS实现webSocket通信

19 篇文章 0 订阅

由于项目的需求,需要访问网关因此需要使用http的连接方式进行socket信息推送,因此用的是 SockJS。

1、下载引入: 

1) 首先执行npm i sockjs-client stompjs -S

2) import SockJS from "sockjs-client";    import Stomp from "stompjs";

2、 在methods里定义 webSocket的connection以及取消订阅websocket的 disconnect,代码如下:

 webSocketJS() {
    let socket = new SockJS("/websocket/ws/sockjs");
    this.stompClient = Stomp.over(socket);
    //心跳机制
    //若使用STOMP 1.1 版本,默认开启了心跳检测机制,可通过client对象的heartbeat field进行配置
 (默认值都是10000 ms):
    this.stompClient.heartbeat.outgoing = 10000; //前端对后端进行心跳检测的时长 ms
    this.stompClient.heartbeat.incoming = 0; //后端对前端就行心跳检测的时长 ms

    //去掉debug打印
    this.stompClient.debug = null;

    //这里是订阅路径,如果你要点对点的推送消息,就是这种格式”/user“是前缀,
    //“/machineId ”是订阅的机体Id,
    //“/single”就是个标识,加不加无所谓,加上可能比较容易理解吧,这些都要跟你的后端设置对应上

    //开始连接
    this.stompClient.connect(
      {},
      () => {
        console.info("[WebSocket] 连接请求发送成功!");
        //进行订阅服务
        //***连接
        this.subscribeUrl ="/user/" + machineId + "/single";
         this.stompClient.subscribe(this.subscribeUrl, (message) => {
            //后端ws推送的数据
            let data = this.getRealJsonData(message.body);
            console.log(data, 'data--');//打印后端推送的数据,根据你需要的数据进行编写
              //拷贝ws中data到页面属性
              for (let item in data) {
                this.formDevice[item] = data[item];
              }
             //JSON 支持
            //STOMP 帧的 body 必须是 string 类型,若希望接收/发送 json 对象,
            //可通过 JSON.stringify() and JSON.parse() 实现;
              if (JSON.stringify(data) != '{}') {
                   .....
             }
          });

        return true;
      },
      () => {
        // 断开连接
        console.log("连接请求发送失败");
        //一连接请求发送失败就关闭
        this.buttonStatus = true;
        
      });
    },

3、在created()执行连接,在destroyed()取消订阅,代码如下:

created(){
// 链接Websocket
  this.webSocketJS();
}
// 取消订阅webSocketJS,后面需更新其他飞机的实时推送的数据
   destroyed() {
     console.log('取消订阅');
     this.stompClient.disconnect();  //离开路由之后断开websocket连接
   },

以上就是vue使用SockJS实现webSocket通信过程,如有写的不好可指出哈,对你有用麻烦点赞一下哈~

参考链接:websoket前端基本使用:WebSocket的使用方法(JS前端)_前端websocket怎么用-CSDN博客

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3是一个流行的JavaScript框架,用于构建用户界面。SockJS是一个用于在Web浏览器和服务器之间建立实时通信的库。在Vue3中使用SockJS需要安装两个模块:sockjs-client和stompjs。SockJS提供了服务端和客户端的库,分别是sockjs-node和sockjs-client。在VueCLI3项目中,如果没有使用SockJS,运行"npm run serve"命令后,可能会出现网络请求一直调用一个接口的情况,该接口是"http://localhost:8080/sockjs-node/info?t=1462183700002"。为了实现WebSocket通信,需要后台的配合,同时使用sockjs-client和stompjs这两个模块。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue-cli3 一直运行 /sockjs-node/info?t= 解决方案](https://blog.csdn.net/qq_29207823/article/details/110199195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [在vuewebSocket通信](https://blog.csdn.net/qinchaidaren/article/details/90106542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值