Merge pull request #433 from jaredevantabor/socket-fix

using settimeout if socket.readyState = 0
This commit is contained in:
Jared Tabor
2017-09-19 16:37:31 -07:00
committed by GitHub

View File

@@ -16,6 +16,7 @@ export default
protocol, protocol,
url; url;
console.log("UPDATED");
if($location.protocol() === 'http'){ if($location.protocol() === 'http'){
protocol = 'ws'; protocol = 'ws';
} }
@@ -33,9 +34,9 @@ export default
maxReconnectAttempts: 10 }); maxReconnectAttempts: 10 });
self.socket.onopen = function () { self.socket.onopen = function () {
$log.debug("Websocket connection opened."); $log.debug("Websocket connection opened." + self.socket.readyState);
socketPromise.resolve(); // socketPromise.resolve();
console.log('promise resolved, and readyState: '+ self.readyState); // console.log('promise resolved, and readyState: '+ self.socket.readyState);
self.checkStatus(); self.checkStatus();
if(needsResubscribing){ if(needsResubscribing){
self.subscribe(self.getLast()); self.subscribe(self.getLast());
@@ -79,6 +80,8 @@ export default
var data = JSON.parse(e.data), str = ""; var data = JSON.parse(e.data), str = "";
if(_.has(data, "accept") && data.accept === true){ if(_.has(data, "accept") && data.accept === true){
console.log('handshake message received from server. readyState: '+ this.readyState, data); console.log('handshake message received from server. readyState: '+ this.readyState, data);
socketPromise.resolve();
return;
} }
if(data.group_name==="jobs" && !('status' in data)){ if(data.group_name==="jobs" && !('status' in data)){
// we know that this must have been a // we know that this must have been a
@@ -196,10 +199,20 @@ export default
$log.debug('Sent to Websocket Server: ' + data); $log.debug('Sent to Websocket Server: ' + data);
socketPromise.promise.then(function(){ socketPromise.promise.then(function(){
console.log("socket readyState at emit: " + self.socket.readyState); console.log("socket readyState at emit: " + self.socket.readyState);
// if(self.socket.readyState === 0){ if(self.socket.readyState === 0){
// self.subscribe(self.getLast()); setTimeout(function(){
// } console.log('inside timeout: ' + self.socket.readyState);
if(self.socket.readyState === 1){ self.socket.send(data, function () {
var args = arguments;
self.scope.$apply(function () {
if (callback) {
callback.apply(self.socket, args);
}
});
});
}, 500);
}
else if(self.socket.readyState === 1){
self.socket.send(data, function () { self.socket.send(data, function () {
var args = arguments; var args = arguments;
self.scope.$apply(function () { self.scope.$apply(function () {