fix outstanding poll messages after switch to websockets

This commit is contained in:
Erik 2015-04-06 12:49:39 -04:00
parent 9489676009
commit a4e81fee6a

View File

@ -174,7 +174,12 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
private func doFastUpgrade() { private func doFastUpgrade() {
self.sendWebSocketMessage("", withType: PacketType.UPGRADE) if self.waitingForPoll {
NSLog("Outstanding poll when switched to websockets," +
"we'll probably disconnect soon. You should report this.")
}
self.sendWebSocketMessage("", withType: PacketType.UPGRADE, datas: nil)
self._websocket = true self._websocket = true
self._polling = false self._polling = false
self.fastUpgrade = false self.fastUpgrade = false
@ -207,6 +212,8 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} else if err != nil { } else if err != nil {
if self!.polling { if self!.polling {
self?.handlePollingFailed(err.localizedDescription) self?.handlePollingFailed(err.localizedDescription)
} else {
NSLog(err.localizedDescription)
} }
return return
@ -222,11 +229,10 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} }
self?.waitingForPoll = false self?.waitingForPoll = false
if self!.fastUpgrade { if self!.fastUpgrade {
self?.doFastUpgrade() self?.doFastUpgrade()
return return
} else if !self!.closed && !self!.websocket { } else if !self!.closed && self!.polling {
self?.doPoll() self?.doPoll()
} }
}.resume() }.resume()
@ -291,14 +297,14 @@ public class SocketEngine: NSObject, WebSocketDelegate {
} else if err != nil && self!.polling { } else if err != nil && self!.polling {
self?.handlePollingFailed(err.localizedDescription) self?.handlePollingFailed(err.localizedDescription)
return return
} else if err != nil {
NSLog(err.localizedDescription)
return
} }
self?.waitingForPost = false self?.waitingForPost = false
dispatch_async(self!.emitQueue) { dispatch_async(self!.emitQueue) {
if self!.fastUpgrade { if !self!.fastUpgrade {
self?.doFastUpgrade()
return
} else {
self?.flushWaitingForPost() self?.flushWaitingForPost()
self?.doPoll() self?.doPoll()
} }
@ -611,6 +617,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
if self.websocketConnected { if self.websocketConnected {
// NSLog("Doing fast upgrade") // NSLog("Doing fast upgrade")
// Do a fast upgrade // Do a fast upgrade
// At this point, we should not send anymore polling messages-
self.fastUpgrade = true self.fastUpgrade = true
self.sendPollMessage("", withType: PacketType.NOOP) self.sendPollMessage("", withType: PacketType.NOOP)
} }