client/annotviz/app/js/wswrapper.js
changeset 98 72d767c5142d
equal deleted inserted replaced
97:545803e685e0 98:72d767c5142d
       
     1 /**
       
     2 * js/wswrapper.js
       
     3 *
       
     4 * simple webservice wrapper to register callbacks on onmessage
       
     5 *
       
     6 */
       
     7 
       
     8 /* global WebSocket: false */
       
     9 
       
    10 'use strict';
       
    11 
       
    12 function WsWrapper(wsurl, logger) {
       
    13 
       
    14     var url = wsurl;
       
    15     var sock = new WebSocket(url);
       
    16     var loggerObj = logger;
       
    17 
       
    18     var log = function(msg) {
       
    19         if(loggerObj) {
       
    20             loggerObj.log(msg);
       
    21         }
       
    22     };
       
    23 
       
    24     var handlers = [];
       
    25 
       
    26     sock.onopen = function() {
       
    27         log('Connected to ' + url);
       
    28     };
       
    29 
       
    30     sock.onclose = function(e) {
       
    31         log('Connection closed (wasClean = ' + e.wasClean + ', code = ' + e.code + ', reason = \'' + e.reason + '\')');
       
    32         sock = null;
       
    33     };
       
    34 
       
    35     sock.onmessage = function(e) {
       
    36         log('received ' + e.data);
       
    37         var data = JSON.parse(e.data);
       
    38         handlers.forEach(function(handler) {
       
    39             handler(data);
       
    40         });
       
    41     };
       
    42 
       
    43     this.message = function(handler) {
       
    44         if(handler) {
       
    45             handlers.push(handler);
       
    46         }
       
    47     };
       
    48 
       
    49 }
       
    50 
       
    51 module.exports = {
       
    52     WsWrapper: WsWrapper
       
    53 };