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 相关文章推荐
javascript编程起步(第五课)
Feb 27 Javascript
javascript 文章截取部分无损html显示实现代码
May 04 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
javascript:void(0)点击登录没反应怎么解决
Nov 13 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
vue中将网页打印成pdf实例代码
Jun 15 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
Aug 28 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
说说Vue.js中的functional函数化组件的使用
Feb 12 Javascript
详细聊聊vue中组件的props属性
Nov 02 Vue.js
微信小程序实现弹出菜单
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中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
10个实用的脚本代码工具
2010/05/04 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
python使用scrapy解析js示例
2014/01/23 Python
Python获取任意xml节点值的方法
2015/05/05 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
质量工程师岗位职责
2013/11/16 职场文书
农贸市场管理制度
2014/01/31 职场文书
欢迎新生标语
2014/10/06 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书