@@ -61,6 +61,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
6161 private var _polling = true
6262 private var probing = false
6363 private var probeWait = PollWaitQueue ( )
64+ private let session : NSURLSession !
6465 private var waitingForPoll = false
6566 private var waitingForPost = false
6667 private var _websocket = false
@@ -81,6 +82,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
8182 init ( client: SocketIOClient , forcePolling: Bool = false ) {
8283 self . client = client
8384 self . forcePolling = forcePolling
85+ self . session = NSURLSession ( configuration: NSURLSessionConfiguration . ephemeralSessionConfiguration ( ) ,
86+ delegate: nil , delegateQueue: self . workQueue)
8487 }
8588
8689 func close( ) {
@@ -144,12 +147,10 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
144147 return
145148 }
146149
147- let req = NSURLRequest ( URL:
148- NSURL ( string: self . urlPolling! + " &sid= \( self . sid) " ) !)
150+ let req = NSURLRequest ( URL: NSURL ( string: self . urlPolling! + " &sid= \( self . sid) " ) !)
149151 self . waitingForPoll = true
150152
151- NSURLConnection . sendAsynchronousRequest ( req,
152- queue: self . workQueue) { [ weak self] res, data, err in
153+ self . session. dataTaskWithRequest ( req) { [ weak self] data, res, err in
153154 if self == nil {
154155 return
155156 } else if err != nil {
@@ -161,7 +162,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
161162
162163 // println(data)
163164
164- if let str = NSString ( data: data, encoding: NSUTF8StringEncoding) {
165+ if let str = NSString ( data: data, encoding: NSUTF8StringEncoding) as? String {
165166 // println(str)
166167
167168 dispatch_async ( self ? . parseQueue) { [ weak self] in
@@ -172,7 +173,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
172173
173174 self ? . waitingForPoll = false
174175 self ? . doPoll ( )
175- }
176+ } . resume ( )
176177 }
177178
178179 private func flushProbeWait( ) {
@@ -206,10 +207,9 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
206207 postStr += " \( len) : \( packet) "
207208 }
208209
209- self . postWait. removeAll ( keepCapacity: true )
210+ self . postWait. removeAll ( keepCapacity: false )
210211
211- var req = NSMutableURLRequest ( URL:
212- NSURL ( string: self . urlPolling! + " &sid= \( self . sid) " ) !)
212+ let req = NSMutableURLRequest ( URL: NSURL ( string: self . urlPolling! + " &sid= \( self . sid) " ) !)
213213
214214 req. HTTPMethod = " POST "
215215 req. setValue ( " application/html-text " , forHTTPHeaderField: " Content-Type " )
@@ -222,7 +222,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
222222 req. HTTPBody = postData
223223
224224 self . waitingForPost = true
225- NSURLConnection . sendAsynchronousRequest ( req, queue: self . workQueue) { [ weak self] res, data, err in
225+
226+ self . session. dataTaskWithRequest ( req) { [ weak self] data, res, err in
226227 if err != nil {
227228 if self !. polling {
228229 self ? . handlePollingFailed ( err)
@@ -233,7 +234,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
233234 self ? . flushWaitingForPost ( )
234235 self ? . waitingForPost = false
235236 self ? . doPoll ( )
236- }
237+ } . resume ( )
237238 }
238239
239240 // We had packets waiting for send when we upgraded
@@ -269,8 +270,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
269270 self . urlWebSocket = urlWebSocket
270271 let reqPolling = NSURLRequest ( URL: NSURL ( string: urlPolling + " &b64=1 " ) !)
271272
272- NSURLConnection . sendAsynchronousRequest ( reqPolling,
273- queue: self . workQueue) { [ weak self] res, data, err in
273+ self . session. dataTaskWithRequest ( reqPolling) { [ weak self] data, res, err in
274274 var err : NSError ?
275275 if self == nil {
276276 return
@@ -325,7 +325,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
325325 self ? . doPoll ( )
326326 self ? . startPingTimer ( )
327327 }
328- }
328+ } . resume ( )
329329 }
330330
331331 // Translatation of engine.io-parser#decodePayload
@@ -477,8 +477,6 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
477477 }
478478
479479 func sendPing( ) {
480- // println("sending ping")
481-
482480 if self . websocket {
483481 self . sendWebSocketMessage ( " " , withType: PacketType . PING)
484482 } else {
@@ -527,7 +525,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
527525 if self . pingInterval == nil {
528526 return
529527 }
530-
528+
531529 self . pingTimer? . invalidate ( )
532530 dispatch_async ( dispatch_get_main_queue ( ) ) {
533531 self . pingTimer = NSTimer . scheduledTimerWithTimeInterval ( NSTimeInterval ( self . pingInterval!) , target: self ,
0 commit comments