diff --git a/web/gui/src/main/webapp/app/fw/remote/urlfn.js b/web/gui/src/main/webapp/app/fw/remote/urlfn.js
index fcb373c..fe43267 100644
--- a/web/gui/src/main/webapp/app/fw/remote/urlfn.js
+++ b/web/gui/src/main/webapp/app/fw/remote/urlfn.js
@@ -33,25 +33,25 @@
                 return secure ? protocol + 's' : protocol;
             }
 
-            function urlBase(protocol) {
+            function urlBase(protocol, port) {
                 return matchSecure(protocol) + '://' +
-                    $loc.host() + ':' + $loc.port();
+                    $loc.host() + ':' + (port || $loc.port());
             }
 
             function httpPrefix(suffix) {
                 return urlBase('http') + suffix;
             }
 
-            function wsPrefix(suffix) {
-                return urlBase('ws') + suffix;
+            function wsPrefix(suffix, wsport) {
+                return urlBase('ws', wsport) + suffix;
             }
 
             function rsUrl(path) {
                 return httpPrefix(rsSuffix) + path;
             }
 
-            function wsUrl(path) {
-                return wsPrefix(wsSuffix) + path;
+            function wsUrl(path, wsport) {
+                return wsPrefix(wsSuffix, wsport) + path;
             }
 
             return {
diff --git a/web/gui/src/main/webapp/app/fw/remote/websocket.js b/web/gui/src/main/webapp/app/fw/remote/websocket.js
index de7b076..bdd1e3c 100644
--- a/web/gui/src/main/webapp/app/fw/remote/websocket.js
+++ b/web/gui/src/main/webapp/app/fw/remote/websocket.js
@@ -23,15 +23,17 @@
     var fs;
 
     angular.module('onosRemote')
-    .factory('WebSocketService', ['$location', 'UrlFnService', 'FnService',
-        function ($loc, ufs, _fs_) {
+    .factory('WebSocketService',
+            ['$log', '$location', 'UrlFnService', 'FnService',
+
+        function ($log, $loc, ufs, _fs_) {
             fs = _fs_;
 
             // creates a web socket for the given path, returning a "handle".
-            // cb is the callbacks block.
-            function createWebSocket(path, cb) {
-                //var fullUrl = ufs.wsUrl(path),
-                var fullUrl = 'ws://localhost:8123/foo',
+            // opts contains the event handler callbacks.
+            function createWebSocket(path, opts) {
+                var wsport = opts && opts.wsport,
+                    fullUrl = ufs.wsUrl(path, wsport),
                     ws = new WebSocket(fullUrl),
                     api = {
                         meta: { path: fullUrl, ws: ws },
@@ -39,9 +41,11 @@
                         close: close
                     };
 
-                ws.onopen = (cb && cb.onOpen) || null;
-                ws.onmessage = (cb && cb.onMessage) || null;
-                ws.onclose = (cb && cb.onClose) || null;
+                $log.debug('Attempting to open websocket to: ' + fullUrl);
+
+                ws.onopen = (opts && opts.onOpen) || null;
+                ws.onmessage = (opts && opts.onMessage) || null;
+                ws.onclose = (opts && opts.onClose) || null;
 
                 function send(msg) {
                     if (msg) {
