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);
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'
});
- 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');