diff --git a/web/gui/src/main/webapp/app/fw/remote/wsevent.js b/web/gui/src/main/webapp/app/fw/remote/wsevent.js
index c410592..bf04b86 100644
--- a/web/gui/src/main/webapp/app/fw/remote/wsevent.js
+++ b/web/gui/src/main/webapp/app/fw/remote/wsevent.js
@@ -20,11 +20,28 @@
 (function () {
     'use strict';
 
+    var sid = 0;
+
     angular.module('onosRemote')
-        .factory('WsEventService', ['$location', function ($loc) {
-            
+        .factory('WsEventService', [function () {
+
+            function sendEvent(ws, evType, payload) {
+                var p = payload || {};
+
+                ws.send({
+                    event: evType,
+                    sid: ++sid,
+                    payload: p
+                });
+            }
+
+            function resetSid() {
+                sid = 0;
+            }
+
             return {
-               tbd: function () {}
+                sendEvent: sendEvent,
+                resetSid: resetSid
             };
         }]);
 
diff --git a/web/gui/src/main/webapp/tests/app/fw/remote/wsevent-spec.js b/web/gui/src/main/webapp/tests/app/fw/remote/wsevent-spec.js
new file mode 100644
index 0000000..9146cca
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/app/fw/remote/wsevent-spec.js
@@ -0,0 +1,78 @@
+/*
+ * 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 - Unit Tests
+ */
+describe('factory: fw/remote/wsevent.js', function () {
+    var $log, fs, wse;
+
+    beforeEach(module('onosRemote'));
+
+    beforeEach(inject(function (_$log_, FnService, WsEventService) {
+        $log = _$log_;
+        fs = FnService;
+        wse = WsEventService;
+        wse.resetSid();
+    }));
+
+
+    it('should define WsEventService', function () {
+        expect(wse).toBeDefined();
+    });
+
+    it('should define api functions', function () {
+        expect(fs.areFunctions(wse, [
+            'sendEvent'
+        ])).toBeTruthy();
+    });
+
+    var event,
+        fakeWs = {
+            send: function (ev) {
+                event = ev;
+            }
+        };
+
+    it('should construct an event object with no payload', function ()  {
+        wse.sendEvent(fakeWs, 'foo');
+        expect(event.event).toEqual('foo');
+        expect(event.sid).toEqual(1);
+        expect(event.payload).toEqual({});
+    });
+
+    it('should construct an event object with some payload', function ()  {
+        wse.sendEvent(fakeWs, 'bar', { val: 42 });
+        expect(event.event).toEqual('bar');
+        expect(event.sid).toEqual(1);
+        expect(event.payload).toEqual({ val: 42 });
+    });
+
+    it('should increment the sid', function () {
+        wse.sendEvent(fakeWs, 'one');
+        expect(event.event).toEqual('one');
+        expect(event.sid).toEqual(1);
+
+        wse.sendEvent(fakeWs, 'dos');
+        expect(event.event).toEqual('dos');
+        expect(event.sid).toEqual(2);
+
+        wse.sendEvent(fakeWs, 'tres');
+        expect(event.event).toEqual('tres');
+        expect(event.sid).toEqual(3);
+    });
+
+});
