From ea3bd02f6ab640f8104504ca6bc143a0aa059e3d Mon Sep 17 00:00:00 2001 From: ram Date: Fri, 17 Apr 2015 16:39:21 +0530 Subject: [PATCH 1/2] Adding a NSURLSessionDelegate to socket client options and in turn to socket engine to allow support for cases like self-signed certificates --- SocketIOClientSwift/SocketEngine.swift | 14 +++++++------- SocketIOClientSwift/SocketIOClient.swift | 12 ++++++++++-- 2 files changed, 17 insertions(+), 9 deletions(-) mode change 100644 => 100755 SocketIOClientSwift/SocketEngine.swift mode change 100644 => 100755 SocketIOClientSwift/SocketIOClient.swift diff --git a/SocketIOClientSwift/SocketEngine.swift b/SocketIOClientSwift/SocketEngine.swift old mode 100644 new mode 100755 index ed8c102..7ead844 --- a/SocketIOClientSwift/SocketEngine.swift +++ b/SocketIOClientSwift/SocketEngine.swift @@ -24,11 +24,11 @@ import Foundation -extension String { - private var length:Int { - return count(self) - } -} +//extension String { +// private var length:Int { +// return count(self) +// } +//} public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { private typealias Probe = (msg:String, type:PacketType, data:ContiguousArray?) @@ -93,14 +93,14 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { } public init(client:SocketEngineClient, forcePolling:Bool, - forceWebsockets:Bool, withCookies cookies:[NSHTTPCookie]?, logging:Bool) { + forceWebsockets:Bool, withCookies cookies:[NSHTTPCookie]?, logging:Bool, withSessionDelegate sessionDelegate : NSURLSessionDelegate?) { self.client = client self.forcePolling = forcePolling self.forceWebsockets = forceWebsockets self.cookies = cookies self.log = logging self.session = NSURLSession(configuration: NSURLSessionConfiguration.ephemeralSessionConfiguration(), - delegate: nil, delegateQueue: self.workQueue) + delegate: sessionDelegate, delegateQueue: self.workQueue) } public func close(#fast:Bool) { diff --git a/SocketIOClientSwift/SocketIOClient.swift b/SocketIOClientSwift/SocketIOClient.swift old mode 100644 new mode 100755 index c8a0f5e..dc566c7 --- a/SocketIOClientSwift/SocketIOClient.swift +++ b/SocketIOClientSwift/SocketIOClient.swift @@ -24,7 +24,7 @@ import Foundation -public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient { +public final class SocketIOClient: NSObject, NSURLSessionDelegate, SocketEngineClient, SocketLogClient { private lazy var params = [String: AnyObject]() private var anyHandler:((SocketAnyEvent) -> Void)? private var _closed = false @@ -40,6 +40,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient private var _reconnecting = false private var reconnectTimer:NSTimer? + let reconnectAttempts:Int! let logType = "SocketClient" var ackHandlers = SocketAckMap() @@ -47,6 +48,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient var log = false var waitingData = ContiguousArray() + var sessionDelegate : NSURLSessionDelegate? + public let socketURL:String public let handleAckQueue = dispatch_queue_create("handleAckQueue", DISPATCH_QUEUE_SERIAL) public let handleQueue = dispatch_queue_create("handleQueue", DISPATCH_QUEUE_SERIAL) @@ -90,6 +93,10 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient // Set options if opts != nil { + if let sessionDelegate = opts!["sessionDelegate"] as? NSURLSessionDelegate { + self.sessionDelegate = sessionDelegate + } + if let cookies = opts!["cookies"] as? [NSHTTPCookie] { self.cookies = cookies } @@ -145,7 +152,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient forcePolling: self.forcePolling, forceWebsockets: self.forceWebsockets, withCookies: self.cookies, - logging: self.log) + logging: self.log, + withSessionDelegate : self.sessionDelegate) } /** From 057be73990b61d50ae9a5c3667a65edc0e2f5fd3 Mon Sep 17 00:00:00 2001 From: ramki982 Date: Fri, 17 Apr 2015 16:44:56 +0530 Subject: [PATCH 2/2] Uncommenting the string extension --- SocketIOClientSwift/SocketEngine.swift | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/SocketIOClientSwift/SocketEngine.swift b/SocketIOClientSwift/SocketEngine.swift index 7ead844..3ac169f 100755 --- a/SocketIOClientSwift/SocketEngine.swift +++ b/SocketIOClientSwift/SocketEngine.swift @@ -23,12 +23,11 @@ // THE SOFTWARE. import Foundation - -//extension String { -// private var length:Int { -// return count(self) -// } -//} +extension String { + private var length:Int { + return count(self) + } +} public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient { private typealias Probe = (msg:String, type:PacketType, data:ContiguousArray?)