@n0tify/common
v0.0.10
Published
Library that shares common structures between [client](https://www.npmjs.com/package/@n0tify/client) and [subscriber](https://www.npmjs.com/package/@n0tify/subscriber).
Downloads
2
Readme
@n0tify/common
Library that shares common structures between client and subscriber.
Transport
Defines what service should be used for data exchange.
Example: RabbitMQ
, Kafka
, Redis
and other...
Every transport is constructed individually and passed as param to the client or subscriber.
Transport implementation example
import { Transport } from '@n0tify/common';
class MyTransport implements Transport {
async connect() {
console.log('connected');
return true;
}
async disconnect() {
console.log('disconnected');
return true;
}
send(pattern, data) {
console.log(`sending data to ${pattern}`, data);
}
subscribe(callback) {
console.log(`subscribed ${callback} for incoming messages`);
}
unsubscribe(callback) {
console.log(`unsubscribed ${callback} from incoming messages`);
}
}
Channel
Defines which channel should be used for data send.
Example: SMS
, Email
, Push
Every channel is constructed individually and has it own paramters and ID.
Channel implementation example
Let's imagine simple SMS channel, this is how implementation could look like:
import { Channel } from '@n0tify/common';
type SmsChannelMessageProps = {
to: string,
content: string;
}
class SmsChannel extends Channel<SmsChannelMessageProps> {
// Phone number used to send messages
from: string;
constructor(...) {
this.from = '123456789';
}
sendMessage(pattern, data, context) {
console.log('Message send');
}
onMessage(pattern, data, context) {
console.log('Message received');
}
}
const smsChannel = new SmsChannel({
from: '987654321'
});
Further usage
For further usage see client or subscriber.