ngx-cable
Version:
36 lines (29 loc) • 655 B
text/typescript
import {Injectable} from '@angular/core';
import {Subject} from 'rxjs/Subject';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/map';
export class Broadcaster {
private _eventBus: any;
constructor() {
this.init();
};
private init() {
this._eventBus = new Subject();
};
public broadcast(key, data) {
this._eventBus.next({key: key, data: data});
};
public on(key) {
return this._eventBus.asObservable()
.filter(function (event) {
return event.key === key;
})
.map(function (event) {
return event.data;
});
};
public off() {
this.init();
};
}