zoukankan      html  css  js  c++  java
  • Stompjs websocket vue

    公司项目要求要有消息提醒机制 , 多方面考虑用了ActiveMQ ,基本上现在主流的后台语言都没啥问题 , php phthon java nodejs , 等等都没问题 , 各位道友可以去查阅相关资料 , 我这里只粘贴出前端的代码

    <template>
      <div></div>
    </template>
    <script>
    import Stomp from "stompjs";
    function uuid() {
      var s = [];
      var hexDigits = "0123456789abcdef";
      for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
      }
      s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
      s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
      s[8] = s[13] = s[18] = s[23] = "-";
      var uuid = s.join("");
      return uuid;
    }
    export default {
      data() {
        return {
          // client: Stomp.client("ws://192.168.1.103:61614/stomp")
          client: null
        };
      },
      methods: {
        onConnected(frame) {
          console.log("Connected: " + frame);
          var topic = "/topic/charger.messageTopic";
          this.client.subscribe(topic, this.responseCallback, this.onFailed);
        },
        onFailed(frame) {
          console.log("Failed: " + frame);
        },
        responseCallback(frame) {
          console.log("得到的消息 msg=>" + frame.body);
          console.log(frame)
        },
        connect() {
          this.client= Stomp.client("ws://192.168.1.103:61614/stomp")
          var clientid = uuid();
          var headers = {
            "login": "admin",
            "passcode": "admin",
            "client-id": clientid,
            // additional header
          };
          this.client.connect(headers, this.onConnected, this.onFailed);
        }
      },
      mounted() {
        this.connect()
      }
    };
    </script>

     请广大道友注意如果直接install stompjs (中间没点 , 别整错了)那么在vue里面会报错 , 因为还需要install 一下 net 

    var Stomp = require('./lib/stomp.js');
    var StompNode = require('./lib/stomp-node.js');
    
    module.exports = Stomp.Stomp;
    module.exports.overTCP = StompNode.overTCP;
    module.exports.overWS = StompNode.overWS;

    index.js 里面引用到了这个stomp-node.js然儿这个node.js

    Stomp = require('./stomp');
    
      net = require('net');
    
      Stomp.Stomp.setInterval = function(interval, f) {
        return setInterval(f, interval);
      };

    用到了net ,

    请注意箭头函数的使用 , if你直接使用function的话会有this的指向性问题 , client里面封装了很多原型函数 , 如果this指向调用错误的话这些函数都会找不到

  • 相关阅读:
    SSE特殊指令集系列之二字节绝对差值求和指令
    HDR阴影高光图像增强
    移植FFMPEG到VS2008系列之二
    SSE2指令集系列之一浮点运算指令
    移植FFMPEG到VS2008系列之三
    网站添加时间线
    HTML实体符号代码速查表
    div显示在object、embed之上~
    不用JS照样使IE6支持PNG 24位背景图支持透明背景且链接不会失去焦点
    CSS 针对谷歌浏览器(Chrome) safari的webkit核心浏览器CSS hack
  • 原文地址:https://www.cnblogs.com/sunjinggege/p/8351634.html
Copyright © 2011-2022 走看看