8.0.0 • Published 4 years ago

litebus v8.0.0

Weekly downloads
8
License
MIT
Repository
github
Last release
4 years ago

About

Litebus is a lightweight message bus for angular apps.

Documentation

This library provides messages exchanging between different modules with priorities mechanism.

Installation and configuration

First of all it is required to install package via npm:

npm install litebus

After that you must register MessageBusService in root module of your app:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MessageBusService } from 'litebus';

@NgModule({
    declarations: [],
    imports: [CommonModule],
    providers: [MessageBusService]
})
export class AppModule {
}

As you can see MessageBusService present in providers property of AppModule. Sure, you can select different module or component which will provide MessageBusService.

Package installed and ready to work.

Messaging

MessageBusService provides some methods to implement messaging system. When you publishing any message MessageBusService notify all previously created listeners on order of their priority.

Examples

Trace all messages:

constructor(private messageBus: MessageBusService) {
    this.messageBus.listenAll((observable) => {
        return observable.subscribe(message => console.log(message));
    }, ListenerPriority.High);
}

Listen messages with name MessageNames.DomainPlaceAdded:

this.listeners.push(
    this.messageBus.listen([MessageNames.DomainPlaceAdded],
        (observable: Observable<Message<Place>>) => {
            return observable.subscribe(message => this.drawPlace(message.payload));
        })
);

Note: all listen methods returns identifier of newly created listener. Use this identifier to cancel listening with stopListen method.

Listen messages with name MessageNames.DomainPlaceAdded only one time:

this.listeners.push(
    this.messageBus.listenOnce([MessageNames.DomainPlaceAdded],
        (observable: Observable<Message<Place>>) => {
            return observable.subscribe(message => this.drawPlace(message.payload));
        })
);

Listen all messages only one time:

this.listeners.push(
    this.messageBus.listenAllOnce((observable: Observable<Message<Place>>) => {
            return observable.subscribe(message => this.drawPlace(message.payload));
        })
);

Listen messages with high ListenerPriority:

this.listeners.push(
    this.messageBus.listen([MessageNames.DomainPlaceAdded],
        (observable: Observable<Message<Place>>) => {
            return observable.subscribe(message => this.drawPlace(message.payload));
        }),
        ListenerPriority.High
);

Stop listen messages:

this.messageBus.stopListen(this.listeners);
this.listeners.splice(0, this.listeners.length);

Reject listened message to prevent handling with next listeners:

this.listeners.push(
    this.messageBus.listen([MessageNames.DomainPlaceAdded],
        (observable: Observable<Message<Place>>) => {
            return observable.subscribe(message => {
                message.reject();
            });
        })
);

Publishing message:

let message = new Message(MessageNames.DomainPlaceAdded, place, sender);
this.messageBus.publish(message);

Conclusion

I really hope that this package will help you. Enjoy ;)

8.0.0

4 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago