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 相关文章推荐
jQuery中文入门指南,翻译加实例,jQuery的起点教程
Feb 09 Javascript
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
javascript 基础篇2 数据类型,语句,函数
Mar 14 Javascript
用Javascript实现Windows任务管理器的代码
Mar 27 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
关于Javascript中defer和async的区别总结
Sep 20 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 Javascript
Angular.js实现注册系统的实例详解
Dec 18 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
Aug 15 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
Feb 09 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 Javascript
vue使用原生swiper代码实例
Feb 05 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
Yii操作数据库的3种方法
2014/03/11 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
jquery实现搜索框功能实例详解
2018/07/23 jQuery
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
django初始化数据库的实例
2018/05/27 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
公证书格式
2015/01/23 职场文书
公司食堂管理制度
2015/08/05 职场文书
清明节随笔
2015/08/15 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
redis 存储对象的方法对比分析
2021/08/02 Redis
MySQL RC事务隔离的实现
2022/03/31 MySQL