Merge pull request #392 from weaveworks/352-trying

'Trying to reconnect..' in UI even though its connected
This commit is contained in:
David
2015-08-28 14:39:06 +02:00
5 changed files with 26 additions and 6 deletions

View File

@@ -30,6 +30,12 @@ module.exports = {
WebapiUtils.getNodesDelta(AppStore.getCurrentTopologyUrl());
},
openWebsocket: function() {
AppDispatcher.dispatch({
type: ActionTypes.OPEN_WEBSOCKET
});
},
closeWebsocket: function() {
AppDispatcher.dispatch({
type: ActionTypes.CLOSE_WEBSOCKET

View File

@@ -10,6 +10,7 @@ module.exports = keymirror({
HIT_ESC_KEY: null,
LEAVE_EDGE: null,
LEAVE_NODE: null,
OPEN_WEBSOCKET: null,
RECEIVE_NODE_DETAILS: null,
RECEIVE_NODES: null,
RECEIVE_NODES_DELTA: null,

View File

@@ -39,6 +39,10 @@ describe('AppStore', function() {
type: ActionTypes.HIT_ESC_KEY
};
const OpenWebsocketAction = {
type: ActionTypes.OPEN_WEBSOCKET
};
const ReceiveEmptyNodesDeltaAction = {
type: ActionTypes.RECEIVE_NODES_DELTA,
delta: {}
@@ -170,6 +174,9 @@ describe('AppStore', function() {
expect(AppStore.isWebsocketClosed()).toBeTruthy();
expect(AppStore.getNodes()).toEqual(NODE_SET);
registeredCallback(OpenWebsocketAction);
expect(AppStore.isWebsocketClosed()).toBeFalsy();
registeredCallback(ReceiveEmptyNodesDeltaAction);
expect(AppStore.getNodes()).toEqual({});
});

View File

@@ -188,6 +188,14 @@ AppStore.registeredCallback = function(payload) {
AppStore.emit(AppStore.CHANGE_EVENT);
break;
case ActionTypes.OPEN_WEBSOCKET:
// flush nodes cache after re-connect
nodes = {};
websocketClosed = false;
AppStore.emit(AppStore.CHANGE_EVENT);
break;
case ActionTypes.RECEIVE_ERROR:
errorUrl = payload.errorUrl;
AppStore.emit(AppStore.CHANGE_EVENT);
@@ -207,12 +215,6 @@ AppStore.registeredCallback = function(payload) {
errorUrl = null;
// flush nodes cache after re-connect
if (websocketClosed) {
nodes = {};
}
websocketClosed = false;
// nodes that no longer exist
_.each(payload.delta.remove, function(nodeId) {
// in case node disappears before mouseleave event

View File

@@ -26,6 +26,10 @@ function createWebsocket(topologyUrl) {
socket = new WebSocket(WS_URL + topologyUrl + '/ws?t=' + updateFrequency);
socket.onopen = function() {
AppActions.openWebsocket();
};
socket.onclose = function() {
clearTimeout(reconnectTimer);
socket = null;