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指向调用错误的话这些函数都会找不到

posted @ 2018-01-25 15:54  JGG靖哥哥  阅读(4012)  评论(0编辑  收藏  举报