finalize implenetation of predictive client posts so that users get immediate feedback after posting

Этот коммит содержится в:
JoramWilander
2015-08-12 12:45:15 -04:00
родитель c77f604188
Коммит fa1491bbfb
13 изменённых файлов: 369 добавлений и 265 удалений

Просмотреть файл

@@ -15,72 +15,80 @@ var CHANGE_EVENT = 'change';
var conn;
var SocketStore = assign({}, EventEmitter.prototype, {
initialize: function(self) {
if (!UserStore.getCurrentId()) return;
initialize: function() {
if (!UserStore.getCurrentId()) {
return;
}
if (!self) self = this;
self.setMaxListeners(0);
var self = this;
self.setMaxListeners(0);
if (window["WebSocket"] && !conn) {
var protocol = window.location.protocol == "https:" ? "wss://" : "ws://";
var port = window.location.protocol == "https:" ? ":8443" : "";
var conn_url = protocol + location.host + port + "/api/v1/websocket";
console.log("connecting to " + conn_url);
conn = new WebSocket(conn_url);
if (window.WebSocket && !conn) {
var protocol = 'ws://';
var port = '';
if (window.location.protocol === 'https:') {
protocol = 'wss://';
port = ':8443';
}
var connUrl = protocol + location.host + port + '/api/v1/websocket';
console.log('connecting to ' + connUrl);
conn = new WebSocket(connUrl);
conn.onclose = function(evt) {
console.log("websocket closed");
console.log(evt);
conn = null;
setTimeout(function(){self.initialize(self)}, 3000);
};
conn.onclose = function closeConn(evt) {
console.log('websocket closed');
console.log(evt);
conn = null;
setTimeout(
function reconnect() {
self.initialize();
},
3000
);
};
conn.onerror = function(evt) {
console.log("websocket error");
console.log(evt);
};
conn.onerror = function connError(evt) {
console.log('websocket error');
console.log(evt);
};
conn.onmessage = function(evt) {
AppDispatcher.handleServerAction({
type: ActionTypes.RECIEVED_MSG,
msg: JSON.parse(evt.data)
});
};
conn.onmessage = function connMessage(evt) {
AppDispatcher.handleServerAction({
type: ActionTypes.RECIEVED_MSG,
msg: JSON.parse(evt.data)
});
};
}
},
emitChange: function(msg) {
this.emit(CHANGE_EVENT, msg);
},
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
removeChangeListener: function(callback) {
this.removeListener(CHANGE_EVENT, callback);
},
sendMessage: function(msg) {
if (conn && conn.readyState === WebSocket.OPEN) {
conn.send(JSON.stringify(msg));
} else if (!conn || conn.readyState === WebSocket.Closed) {
conn = null;
this.initialize();
}
}
},
emitChange: function(msg) {
this.emit(CHANGE_EVENT, msg);
},
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
removeChangeListener: function(callback) {
this.removeListener(CHANGE_EVENT, callback);
},
sendMessage: function (msg) {
if (conn && conn.readyState === WebSocket.OPEN) {
conn.send(JSON.stringify(msg));
} else if (!conn || conn.readyState === WebSocket.Closed) {
conn = null;
this.initialize();
}
}
});
SocketStore.dispatchToken = AppDispatcher.register(function(payload) {
var action = payload.action;
var action = payload.action;
switch(action.type) {
case ActionTypes.RECIEVED_MSG:
SocketStore.emitChange(action.msg);
break;
default:
}
switch (action.type) {
case ActionTypes.RECIEVED_MSG:
SocketStore.emitChange(action.msg);
break;
default:
}
});
SocketStore.initialize();
module.exports = SocketStore;