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 相关文章推荐
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
Jun 02 Javascript
读jQuery之三(构建选择器)
Jun 11 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
JavaScript原生对象常用方法总结(推荐)
May 13 Javascript
Javascript简写条件语句(推荐)
Jun 12 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
TypeScript入门-接口
Mar 30 Javascript
js根据json数据中的某一个属性来给数据分组的方法
Oct 08 Javascript
vue插槽slot的理解和使用方法
Apr 03 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
分享15个Webpack实用的插件!!!
Mar 31 Javascript
html5 录制mp3音频支持采样率和比特率设置
Jul 15 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分页显示制作详细讲解
2006/12/05 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP加密扩展库Mcrypt安装和实例
2013/11/10 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
中文系师范生自荐信
2013/10/01 职场文书
公司企业表扬信
2014/01/11 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
西式结婚主持词
2014/03/14 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
学生检讨书范文
2014/10/30 职场文书