client/annotviz/app/js/wswrapper.js
author rougeronj
Thu, 16 Apr 2015 12:15:33 +0200
changeset 153 60bd2b36b9dc
parent 98 72d767c5142d
permissions -rw-r--r--
put showTime as an option and add it to static pianoroll template on server

/**
* js/wswrapper.js
*
* simple webservice wrapper to register callbacks on onmessage
*
*/

/* global WebSocket: false */

'use strict';

function WsWrapper(wsurl, logger) {

    var url = wsurl;
    var sock = new WebSocket(url);
    var loggerObj = logger;

    var log = function(msg) {
        if(loggerObj) {
            loggerObj.log(msg);
        }
    };

    var handlers = [];

    sock.onopen = function() {
        log('Connected to ' + url);
    };

    sock.onclose = function(e) {
        log('Connection closed (wasClean = ' + e.wasClean + ', code = ' + e.code + ', reason = \'' + e.reason + '\')');
        sock = null;
    };

    sock.onmessage = function(e) {
        log('received ' + e.data);
        var data = JSON.parse(e.data);
        handlers.forEach(function(handler) {
            handler(data);
        });
    };

    this.message = function(handler) {
        if(handler) {
            handlers.push(handler);
        }
    };

}

module.exports = {
    WsWrapper: WsWrapper
};