@@ -112,6 +112,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
112112 public private( set) var urlWebSocket = URL ( string: " http://localhost/ " ) !
113113
114114 /// If `true`, then the engine is currently in WebSockets mode.
115+ @available ( * , deprecated, message: " No longer needed, if we're not polling, then we must be doing websockets " )
115116 public private( set) var websocket = false
116117
117118 /// The WebSocket for this engine.
@@ -233,7 +234,6 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
233234
234235 if forceWebsockets {
235236 polling = false
236- websocket = true
237237 createWebSocketAndConnect ( )
238238 return
239239 }
@@ -312,19 +312,15 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
312312 }
313313
314314 private func _disconnect( reason: String ) {
315- guard connected else { return closeOutEngine ( reason: reason) }
315+ guard connected && !closed else { return closeOutEngine ( reason: reason) }
316316
317317 DefaultSocketLogger . Logger. log ( " Engine is being closed. " , type: SocketEngine . logType)
318318
319- if closed {
320- return closeOutEngine ( reason: reason)
321- }
322-
323- if websocket {
319+ if polling {
320+ disconnectPolling ( reason: reason)
321+ } else {
324322 sendWebSocketMessage ( " " , withType: . close, withData: [ ] )
325323 closeOutEngine ( reason: reason)
326- } else {
327- disconnectPolling ( reason: reason)
328324 }
329325 }
330326
@@ -347,8 +343,9 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
347343 " we'll probably disconnect soon. You should report this. " , type: SocketEngine . logType)
348344 }
349345
346+ DefaultSocketLogger . Logger. log ( " Switching to WebSockets " , type: SocketEngine . logType)
347+
350348 sendWebSocketMessage ( " " , withType: . upgrade, withData: [ ] )
351- websocket = true
352349 polling = false
353350 fastUpgrade = false
354351 probing = false
@@ -443,6 +440,9 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
443440
444441 // We should upgrade
445442 if message == " 3probe " {
443+ DefaultSocketLogger . Logger. log ( " Received probe response, should upgrade to WebSockets " ,
444+ type: SocketEngine . logType)
445+
446446 upgradeTransport ( )
447447 }
448448
@@ -509,7 +509,6 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
509509 sid = " "
510510 waitingForPoll = false
511511 waitingForPost = false
512- websocket = false
513512 }
514513
515514 private func sendPing( ) {
@@ -592,17 +591,20 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
592591 public func write( _ msg: String , withType type: SocketEnginePacketType , withData data: [ Data ] ) {
593592 engineQueue. async {
594593 guard self . connected else { return }
594+ guard !self . probing else {
595+ self . probeWait. append ( ( msg, type, data) )
595596
596- if self . websocket {
597- DefaultSocketLogger . Logger. log ( " Writing ws: \( msg) has data: \( data. count != 0 ) " ,
598- type: SocketEngine . logType)
599- self . sendWebSocketMessage ( msg, withType: type, withData: data)
600- } else if !self . probing {
597+ return
598+ }
599+
600+ if self . polling {
601601 DefaultSocketLogger . Logger. log ( " Writing poll: \( msg) has data: \( data. count != 0 ) " ,
602602 type: SocketEngine . logType)
603603 self . sendPollMessage ( msg, withType: type, withData: data)
604604 } else {
605- self . probeWait. append ( ( msg, type, data) )
605+ DefaultSocketLogger . Logger. log ( " Writing ws: \( msg) has data: \( data. count != 0 ) " ,
606+ type: SocketEngine . logType)
607+ self . sendWebSocketMessage ( msg, withType: type, withData: data)
606608 }
607609 }
608610 }
@@ -631,14 +633,14 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
631633 return
632634 }
633635
634- guard websocket else {
636+ guard !polling else {
635637 flushProbeWait ( )
636638
637639 return
638640 }
639641
640642 connected = false
641- websocket = false
643+ polling = true
642644
643645 if let reason = error? . localizedDescription {
644646 didError ( reason: reason)
0 commit comments