Angular5集成eventbus的示例代码


Posted in Javascript onJuly 19, 2018

1.package.json中

"dependencies": {
   ...
  "vertx3-eventbus-client": "3.5.2",
 },

然后  npm install,或者:

npm install vertx3-eventbus-client@3.5.2

2.angular-cli.json中

"scripts": [
     ...
    "../node_modules/vertx3-eventbus-client/vertx-eventbus.js"
   ],

3.创建一个eventbus.service.ts用来通信

导入eventbus:

import { EventBus } from 'vertx3-eventbus-client';

声明eventbus:

declare var EventBus: any;

4.创建eventbus实例,监听接口以及发送消息

//创建实例
var eb = new EventBus('http://localhost:8080/eventbus');

eb.onopen = function() {
 //注册监听器用来接受消息
 eb.registerHandler('some-address', function(error, message) {
  console.log('received a message: ' + JSON.stringify(message));
 });

 //发送消息
 eb.send('some-address', {name: 'tim', age: 587});

}

更多信息请参考这里 https://vertx.io/docs/vertx-web/java/

注:

对于需要发送消息来接受的消息,需要先监听,然后再发送消息。
对于一直推送的消息,不需要发送。

代码实例如下:

RegisterHandler(key, id, callback) {
    const address = '***.' + key + '.' + id;
    if (typeof (this.eventBus[key]) === 'undefined' || !this.eventBus[key]) {
      this.eventBus[key] = new EventBus(environment.eventbusUrl);
    }
    if (this.eventBus[key].state === EventBus.OPEN) {
      this.eventBus[key].registerHandler(address, callback);
    } else {
      const $this = this;
      this.eventBus[key].onopen = function () {
        $this.eventBus[key].registerHandler(address, callback)
      }
    }
  }

Send(key, id) {
    var data = '';
    const address = ***.' + key + '.' + id;
    if (typeof (this.eventBus[key]) === 'undefined' || !this.eventBus[key]) {
      this.eventBus[key] = new EventBus(environment.eventbusUrl);
    }
    if (this.eventBus[key].state === EventBus.OPEN) {
      this.eventBus[key].send(address, data)
    } else {
      const $this = this;
      this.eventBus[key].onopen = function () {
        $this.eventBus[key].send(address, data)
      }
    }
  }

closeEventBus(key) {
    if (typeof (this.eventBus[key]) !== 'undefined' && this.eventBus[key] && this.eventBus[key].state === EventBus.OPEN) {
      this.eventBus[key].close();
    }
    this.eventBus[key] = null;
}

在组件ngOnDestroy中调用closeEventBus关闭eventbus。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
国外Lightbox v2.03.3 最新版 下载
Oct 17 Javascript
jQuery.getScript加载同域JS的代码
Feb 13 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
Jun 05 Javascript
javascript省市级联功能实现方法实例详解
Oct 20 Javascript
jQuery+formdata实现上传进度特效遇到的问题
Feb 24 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 Javascript
JavaScript实现购物车基本功能
Jul 21 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
openlayers实现地图测距测面
Sep 25 Javascript
js之ajax文件上传
May 13 Javascript
微信小程序实现弹出菜单
Jul 19 #Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 #Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 #Javascript
微信小程序实现折叠展开效果
Jul 19 #Javascript
详解Angularjs 自定义指令中的数据绑定
Jul 19 #Javascript
微信小程序实现天气预报功能
Jul 18 #Javascript
vue代理和跨域问题的解决
Jul 18 #Javascript
You might like
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
JavaScript自定义事件介绍
2013/08/29 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
jQuery原型属性和原型方法详解
2015/07/07 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
python将ansible配置转为json格式实例代码
2017/05/15 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
生产部统计员岗位职责
2014/01/05 职场文书
学校安全检查制度
2014/01/27 职场文书
学校万圣节活动方案
2014/02/13 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技