client/annotviz/app/js/wswrapper.js
changeset 98 72d767c5142d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/annotviz/app/js/wswrapper.js	Tue Jan 20 11:57:44 2015 +0100
@@ -0,0 +1,53 @@
+/**
+* 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
+};