web-socket-router

1.6.8 • Public • Published

Web Socket Router Build StatusMaintainabilitycodecov

Overview

This is implementation of websocket to provide a clear way to connect to and from a websocket server. Providing tools such, methods, routes, and filters.

  • Creating a new instance of the Web Socket Router

By creating a new instance of the web socket router and passing to the constructor the built-in-web-socket-instance, you are able to start subscribing and sending messages.

var webSocketRouterInstance = new WebSocketRouter(new WebSocket('ws://domain:port')[, context]);
  • Sending messages

Using the message object's builder, you cand send messages to/from the server.

webSocketRouterInstance.message({
    route: '/artist',
    action: webSocketRouterInstance.action.CREATE,
    data: {
        id: 0,
        name: 'Pearl Jam'
    }
});
  • Listening to messages

This way you can define a listener for the route '/artist' with action CREATE.

webSocketRouterInstance.create('/artist', [
    function (artist) {
        //Save Artist Data
    },
    artistController.printSaveMessage
);
  • Routes Interceptors

You can also intercept messages to do error checking.

webSocketRouterInstance.intercept('*', function (artist) {
    if (!artits.id) {
     throw ('No artist id defined.')
    }
});
webSocketRouterInstance.intercept('*', [
    userController.tokenValidation,
    userController.userHasPermission
]);
webSocketRouterInstance.intercept('/artist/delete', [
    artistController.artistExists,
    artistController.userHasPermissionOnResource
]);
  • Defining filters

This way you can define a listener for the route '/artist' with action CREATE filtering by the name Pearl Jam. Filters will apply to any first-child key of the data object.

webSocketRouterInstance.create('/artist', function (artist) {
    //Save Artist Data
}).filter ({
    name: 'Pearl Jam'
});
  • Pre and post message Events This Way you can define an event before sending any route containing '/artist'.
webSocketRouterInstance.beforeSend('/artist', function (artist) {
    artist.name = artist.name.replace (/ /g, '_');
});

And post send events.

webSocketRouterInstance.afterSend('/artist', function (artist) {
    delete ArtistTempData[artist.name];
});
  • Binding a different context for the listener. Even when you can defined a default context on the Web Socket Constructor, you can also define a custom execution context for the function.
webSocketRouterInstance.on('/artist/create', artistController.create).bind(artistController);

The message-builder object.

Empty message

webSocketRouterInstance.message({});

Empty data to artist on default Action

webSocketRouterInstance.message({
    route: '/artist'
});

Custom data to artist with DELETE action

webSocketRouterInstance.message({
    route: '/artist',
    action: webSocketRouterInstance.action.DELETE
});

Custom data to artist with custom action

webSocketRouterInstance.message({
    route: '/artist',
    action: 'myCustomActionName'
});

Listener Object

  • The message-builder object.

Empty data to artist on default Action - Listener

webSocketRouterInstance.on('/artist', artistController.list);

Custom data to artist with DELETE action - Listener (Delete action its predefined and has a .delete method).

webSocketRouterInstance.delete('/artist', artistController.delete);

Custom data to artist with custom action - Listener (Custom actions needs to use the .on method and specify the action name).

webSocketRouterInstance.delete('/artist', artistController.delete).action('myCustomAction');

Package Sidebar

Install

npm i web-socket-router

Weekly Downloads

81

Version

1.6.8

License

ISC

Unpacked Size

90.8 kB

Total Files

9

Last publish

Collaborators

  • santiiiii