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 相关文章推荐
JS简单的图片放大缩小的两种方法
Nov 11 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
Apr 08 Javascript
JS选项卡动态替换banner图片路径的方法
May 11 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
Aug 21 Javascript
js判断登陆用户名及密码是否为空的简单实例
May 16 Javascript
Bootstrap自定义文件上传下载样式
May 26 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
jQuery表单验证之密码确认
May 22 jQuery
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
vue无限轮播插件代码实例
May 10 Javascript
jQuery操作事件完整实例分析
Jan 10 jQuery
微信小程序实现弹出菜单
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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
提问的智慧
2006/10/09 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
表单复选框向PHP传输数据的代码
2007/11/13 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
Javascript表单验证要注意的事项
2014/09/29 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
基于vue2.0实现简单轮播图
2017/11/27 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
python kafka 多线程消费者&手动提交实例
2019/12/21 Python
python小项目之五子棋游戏
2019/12/26 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
上海期货面试题
2014/01/31 面试题
五一服装活动方案
2014/01/11 职场文书
上学迟到的检讨书
2014/01/11 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
高中团支书竞选稿
2015/11/21 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL