Simon Hunt

GUI -- Added ability to define an alternate port for WS - used to connect to moc…

…k web-socket server.  Topo view can use query string '?wsport=8123' for example.

Change-Id: Ie34d557b9580d58239380010e8d58233998a78ca
......@@ -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 {
......
......@@ -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) {
......
......@@ -147,11 +147,14 @@
}
function setUpWebSocket() {
// wsport indicates web-socket-server port other than the default.
// Used for testing with the mock-web-socket-server.
function setUpWebSocket(wsport) {
var wsHandle = wss.createWebSocket('topology', {
onOpen: onWsOpen,
onMessage: onWsMessage,
onClose: onWsClose
onClose: onWsClose,
wsport: wsport
});
// TODO: handle "guiSuccessor" functionality (replace host)
......@@ -168,11 +171,11 @@
angular.module('ovTopo', moduleDependencies)
.controller('OvTopoCtrl', [
'$scope', '$log',
'$scope', '$log', '$location',
'KeyService', 'ZoomService', 'GlyphService', 'MapService',
'WebSocketService',
function ($scope, _$log_, _ks_, _zs_, _gs_, _ms_, _wss_) {
function ($scope, _$log_, $loc, _ks_, _zs_, _gs_, _ms_, _wss_) {
var self = this;
$log = _$log_;
ks = _ks_;
......@@ -200,7 +203,7 @@
setUpDefs();
setUpZoom();
setUpMap();
setUpWebSocket();
setUpWebSocket($loc.search().wsport);
$log.log('OvTopoCtrl has been created');
}]);
......
......@@ -76,4 +76,9 @@ describe('factory: fw/remote/urlfn.js', function () {
setLoc('https', 'foo', '123');
expect(ufs.wsUrl('path')).toEqual('wss://foo:123/onos/ui/ws/path');
});
it('should allow us to define an alternate WS port', function () {
setLoc('http', 'foo', '123');
expect(ufs.wsUrl('xyyzy', 456)).toEqual('ws://foo:456/onos/ui/ws/xyyzy');
});
});
......