diff --git a/web/gui/src/main/webapp/app/fw/remote/rest.js b/web/gui/src/main/webapp/app/fw/remote/rest.js
index 9361afc..a7640cd 100644
--- a/web/gui/src/main/webapp/app/fw/remote/rest.js
+++ b/web/gui/src/main/webapp/app/fw/remote/rest.js
@@ -22,9 +22,6 @@
 
     var $log;
 
-    var urlSuffix = '/onos/ui/rs/';
-
-
 
     // TODO: remove temporary test code
     var fakeData = {
@@ -119,7 +116,7 @@
                     callback(getFakeData(url));
                     return;
                 }
-                var fullUrl = ufs.urlPrefix() + urlSuffix + url;
+                var fullUrl = ufs.rsUrl(url);
 
                 $http.get(fullUrl).then(function (response) {
                     // success
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 1301ea3..fcb373c 100644
--- a/web/gui/src/main/webapp/app/fw/remote/urlfn.js
+++ b/web/gui/src/main/webapp/app/fw/remote/urlfn.js
@@ -20,15 +20,43 @@
 (function () {
     'use strict';
 
+    var uiContext = '/onos/ui/',
+        rsSuffix = uiContext + 'rs/',
+        wsSuffix = uiContext + 'ws/';
+
     angular.module('onosRemote')
         .factory('UrlFnService', ['$location', function ($loc) {
 
-            function urlPrefix() {
-                return $loc.protocol() + '://' + $loc.host() + ':' + $loc.port();
+            function matchSecure(protocol) {
+                var p = $loc.protocol(),
+                    secure = (p === 'https' || p === 'wss');
+                return secure ? protocol + 's' : protocol;
+            }
+
+            function urlBase(protocol) {
+                return matchSecure(protocol) + '://' +
+                    $loc.host() + ':' + $loc.port();
+            }
+
+            function httpPrefix(suffix) {
+                return urlBase('http') + suffix;
+            }
+
+            function wsPrefix(suffix) {
+                return urlBase('ws') + suffix;
+            }
+
+            function rsUrl(path) {
+                return httpPrefix(rsSuffix) + path;
+            }
+
+            function wsUrl(path) {
+                return wsPrefix(wsSuffix) + path;
             }
 
             return {
-               urlPrefix: urlPrefix
+                rsUrl: rsUrl,
+                wsUrl: wsUrl
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/remote/websocket.js b/web/gui/src/main/webapp/app/fw/remote/websocket.js
new file mode 100644
index 0000000..273f711
--- /dev/null
+++ b/web/gui/src/main/webapp/app/fw/remote/websocket.js
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Remote -- Web Socket Service
+ */
+(function () {
+    'use strict';
+
+    angular.module('onosRemote')
+    .factory('WebSocketService', ['$location', 'UrlFnService',
+        function ($loc, ufs) {
+
+            // creates a web socket for the given path, returning a "handle"
+            function createWebSocket(path) {
+                return {
+                    path: ufs.wsUrl(path)
+                    // TODO: complete implementation...
+                };
+            }
+
+            return {
+                createWebSocket: createWebSocket
+            };
+    }]);
+
+}());
diff --git a/web/gui/src/main/webapp/app/fw/remote/wsevent.js b/web/gui/src/main/webapp/app/fw/remote/wsevent.js
new file mode 100644
index 0000000..c410592
--- /dev/null
+++ b/web/gui/src/main/webapp/app/fw/remote/wsevent.js
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Remote -- Web Socket Event Service
+ */
+(function () {
+    'use strict';
+
+    angular.module('onosRemote')
+        .factory('WsEventService', ['$location', function ($loc) {
+            
+            return {
+               tbd: function () {}
+            };
+        }]);
+
+}());
