Home

Creating extensions

Create websokcet extensions to speed up your development process when working with the websocket utility library. It is both easy and fun.

And if you create something you think is useful for others, share it.

Basic server expansion

Expand functionality by adding additional handlers.

Say we want to create a simple logger for our application

In our /lib/wsLogger.js file we could add our logger

var ws = require('/lib/wsUtil');
var http = require('/lib/xp/http-client');

ws.expand({ 'logger': logger});
exports.logger = ws;
function logger() {
  ws.addHandlers('open', function(e) {
    http.request({
        method: 'POST',
        body: JSON.stringify({ logItem: e, event: 'open', ts: Date.now() }),
        ... // Additional request params
    });
  })
  ... // Additional handlers
}

Use

// service/websocket
var wsl = require('logger').logger;
wsl.logger();
wsl.openWebsockets();

Basic client expansion

Expand the client library

var ws = require('/lib/wsUtil');

ws.expandClient('hello', hello);

function hello() {
    send("Hello");
}

Use on client side

var ws = new EnonicXP.Ws();
ws.hello();

Advanced

Expand expansions

var wsl = require('/logger').logger;

wsl.expand({loggerExpansion: someExpansion});

exports.someExpansion = wsl;

Join expansions

// lib/abExpansion.js

var a = require('expansionA').a;
var b = require('expansionB').b;

var exp = {};

for (var name in a) {
    if (a.hasOwnProperty(name) && !b.hasOwnProperty(name)) {
        exp[name] = a[name]; // add whats in a but not b
    }
}

b.expand(exp); // join a with b

exports.ab = b;