This package has been deprecated

Author message:

feathers-channels is now part of @feathersjs/socket-commons and should not be used directly

feathers-channels

0.3.0 • Public • Published

feathers-channels

Greenkeeper badge

Build Status Code Climate Test Coverage Dependency Status Download Status

Channel functionality for real-time event publishing

About

feathers-channels provides channel functionality for bi-directional Feathers service providers. It is e.g. used by the Socket.io and Primus provider to quickly determine what messages to send to connected clients.

npm install feathers-channels --save

Documentation

app.channel(... names)

Returns a named or combined channel object.

const channel = app.channel('test'); // return a `test` channel
 
channel.join(connection); // join a channel
channel.leave(connection); // leave a channel
 
channel.filter(connection => {}) // return a new channel with filtered connections
channel.length // return the number of connections
channel.connections // all connections in this channel
 
const combined = app.channel('test', 'other'); // return a combined channel
 
combined.join(connection); // join the `test` and `other` channel
combined.leave(connection); // leave the `test` and `other` channel
 
channel.filter(connection => {}) // return a new channel with filtered connections (connections will only be iterated once)
combined.length // return the number of connections
combined.connections // all connections in the combined channel (if a connection is in multiple channels it will only show once)

app.service('servicename').publish(event, callback), app.service('servicename').publish(callback)

Register a publishing callback for a service and event (or all events) that returns a (named or combined) channel.

app.use('/test', {
  create(data) {
    return Promise.resolve(data);
  }
});
 
// `created` event for the `test` service
app.service('test').publish('created', (data, hook) =>
  app.channel('*')
);
 
// `created` event for the `test` service, sending different data to two different channels
app.service('test').publish('created', (data, hook) => {
  return [
    app.channel('admins'),
    app.channel('users').send(_.omit(data, 'groups', 'email'))
  ];
});
 
// All events for all services
app.publish((data, hook) =>
  app.channel('*')
);
 
// All `created` events for all services
app.publish('created', (data, hook) =>
  app.channel('*')
);
 
// All events for `test` service
app.service('test').publish((data, hook) =>
  app.channel('*')
);

app.on('publish', function(event, channel, hook) {})

An event that will be sent every time a service event that has connections to publish to happens. channel is a combined channel with all connections to publish the event to.

Note: If there are no channels or connections the publish event will not be sent.

app.on('publish', (event, channel, hook) => {
  channel.connections.forEach(connection => {
    // Do something with `connection`
  });
});

License

Copyright (c) 2017

Licensed under the MIT license.

Package Sidebar

Install

npm i feathers-channels

Weekly Downloads

0

Version

0.3.0

License

MIT

Last publish

Collaborators

  • daffl
  • ekryski
  • marshallswain