Socket
Socket
Sign inDemoInstall

@feathersjs/transport-commons

Package Overview
Dependencies
Maintainers
4
Versions
117
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@feathersjs/transport-commons

Shared functionality for websocket providers


Version published
Weekly downloads
45K
decreased by-2.67%
Maintainers
4
Weekly downloads
 
Created
Source

@feathersjs/transport-commons

Greenkeeper badge

Build Status Maintainability Test Coverage Dependency Status Download Status

Shared functionality for Feathers API transports like @feathers/socketio and @feathersjs/primus. Only intended to be used internally.

About

@feathersjs/transport-commons contains internal shared functionality for Feathers real-time providers (currently Socket.io and Primus).

lib/client.js is a base socket service client lib/index.js returns a configurable function and requires the following options:

  • done - A Promise that resolves once the real-time protocol server has been set up
  • emit - The name of the method to emit data to a socket ('emit' for Socket.io and 'send' for Primus)
  • socketKey - A string or ES6 Symbol which stores the actual socket connection
  • getParams - A function that returns the Feathers connection options for a socket

Channels

Channels provide 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.

const channels = require('@feathersjs/transport-commons/lib/channels');

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) 2018

Licensed under the MIT license.

Keywords

FAQs

Package last updated on 03 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc