@@ -164,18 +164,21 @@ public class SocketEngine: NSObject, WebSocketDelegate {
164164 self . ws = WebSocket ( url: NSURL ( string: self . urlWebSocket! + " &sid= \( self . sid) " ) !)
165165 self . ws? . queue = self . handleQueue
166166 self . ws? . delegate = self
167-
167+
168168 if connect {
169169 self . ws? . connect ( )
170170 }
171171 }
172172
173173 private func doFastUpgrade( ) {
174- self . sendWebSocketMessage ( " " , withType: PacketType . UPGRADE)
175- self . _websocket = true
176- self . _polling = false
177- self . fastUpgrade = false
178- self . flushProbeWait ( )
174+ dispatch_async ( self . emitQueue) { [ weak self] in
175+ self ? . sendWebSocketMessage ( " " , withType: PacketType . UPGRADE)
176+ self ? . _websocket = true
177+ self ? . _polling = false
178+ self ? . fastUpgrade = false
179+ self ? . probing = false
180+ self ? . flushProbeWait ( )
181+ }
179182 }
180183
181184 private func doPoll( ) {
@@ -229,7 +232,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
229232 }
230233
231234 private func flushProbeWait( ) {
232- // println ("flushing probe wait")
235+ // NSLog ("flushing probe wait")
233236 dispatch_async ( self . emitQueue) { [ weak self] in
234237 if self == nil {
235238 return
@@ -240,6 +243,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
240243 }
241244
242245 self ? . probeWait. removeAll ( keepCapacity: false )
246+ // NSLog("waiting for post after flush probe: \(self!.postWait.count)")
243247 }
244248 }
245249
@@ -269,11 +273,14 @@ public class SocketEngine: NSObject, WebSocketDelegate {
269273 let postData = postStr. dataUsingEncoding ( NSUTF8StringEncoding,
270274 allowLossyConversion: false ) !
271275
272- // NSLog("posting: \(postStr)")
273276 req. HTTPBody = postData
274277 req. setValue ( String ( postData. length) , forHTTPHeaderField: " Content-Length " )
275278
276279 self . waitingForPost = true
280+
281+ // NSLog("posting: \(postStr)")
282+ // NSLog("Posting with WS status of: \(self.websocket)")
283+
277284 self . session. dataTaskWithRequest ( req) { [ weak self] data, res, err in
278285 if self == nil {
279286 return
@@ -284,9 +291,13 @@ public class SocketEngine: NSObject, WebSocketDelegate {
284291
285292 self ? . waitingForPost = false
286293 dispatch_async ( self !. emitQueue) {
287- self ? . flushWaitingForPost ( )
288- self ? . doPoll ( )
289- return
294+ if self !. fastUpgrade {
295+ self ? . doFastUpgrade ( )
296+ return
297+ } else {
298+ self ? . flushWaitingForPost ( )
299+ self ? . doPoll ( )
300+ }
290301 } } . resume ( )
291302 }
292303
@@ -517,6 +528,8 @@ public class SocketEngine: NSObject, WebSocketDelegate {
517528 self . write ( " " , withType: PacketType . PING, withData: nil )
518529 }
519530
531+ /// Send polling message.
532+ /// Only call on emitQueue
520533 private func sendPollMessage( var msg: String , withType type: PacketType ,
521534 datas: ContiguousArray < NSData > ? = nil ) {
522535 // println("Sending poll: \(msg) as type: \(type.rawValue)")
@@ -538,6 +551,8 @@ public class SocketEngine: NSObject, WebSocketDelegate {
538551 }
539552 }
540553
554+ /// Send message on WebSockets
555+ /// Only call on emitQueue
541556 private func sendWebSocketMessage( str: String , withType type: PacketType ,
542557 datas: ContiguousArray < NSData > ? = nil ) {
543558 // println("Sending ws: \(str) as type: \(type.rawValue)")
@@ -569,9 +584,9 @@ public class SocketEngine: NSObject, WebSocketDelegate {
569584
570585 private func upgradeTransport( ) {
571586 if self . websocketConnected {
587+ // NSLog("Doing fast upgrade")
572588 // Do a fast upgrade
573589 self . fastUpgrade = true
574- self . probing = false
575590 self . sendPollMessage ( " " , withType: PacketType . NOOP)
576591 }
577592 }
@@ -591,7 +606,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
591606 }
592607 }
593608 }
594-
609+
595610 // Delagate methods
596611
597612 public func websocketDidConnect( socket: WebSocket ) {
0 commit comments