0.2.0 • Published 5 years ago

@rxstack/channels v0.2.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

The RxStack Channels

With channels component you'll be able to create channels, add/remove connections (instance of EventEmitter) and send messages. The component is intended to be used with socketio or any other realtime framework.

Some examples where channels are used:

  • Real-time events should only be sent to authenticated users
  • Users should only get updates about messages if they joined a certain chat room
  • Only users in the same organization should receive real-time updates about their data changes
  • Only admins should be notified when new users are created

Installation

npm install @rxstack/channels --save

Usage

Channel manager

The channel manager is responsible for creating, merging and destroying channels.

// instance of channel manager
const channelManager = new ChannelManager();
// gets or creates a channel if does not exist
const adminsChannel = channelManager.channels('admins');
// or gets or creates merged channels, name of the merge channel would be admins_moderators
const mergeChannels = channelManager.channels('admins', 'moderators');
// destroys the channel
channelManager.removeChannel('admins');
// destroys merged channel
channelManager.removeChannel('admins_moderators');
// destroys all channels
channelManager.reset();

Channels

A channel is an object that contains a number of connections. It can be created via channel manager and allows a connection to join or leave it.

// ...

// gets or creates a channel if does not exist
const adminsChannel = channelManager.channels('admins');
// a connection
const connection = new EventEmitter();
// joins a channel
adminsChannel.join(connection);
// leaves a channel
adminsChannel.leave(connection);
//  clears all connection
adminsChannel.reset();

Connections

A connection is an object (EventEmitter) that represents a real-time connection. It is the same object as socket in a Socket.io. You can add any kind of information to it.

License

Licensed under the MIT license.