client/annotviz/app/js/wswrapper.js
author rougeronj
Fri, 10 Apr 2015 16:45:34 +0200
changeset 145 a8052f8ab19c
parent 98 72d767c5142d
permissions -rw-r--r--
add range options to scale the scene depending on this range. Add rescale function to rescale the scene when a note is out of this range

/**
* 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
};