Adding a NSURLSessionDelegate to socket client options and in turn to socket engine to allow support for cases like self-signed certificates

This commit is contained in:
ram 2015-04-17 16:39:21 +05:30
parent 06f04a046d
commit ea3bd02f6a
2 changed files with 17 additions and 9 deletions

14
SocketIOClientSwift/SocketEngine.swift Normal file → Executable file
View File

@ -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<NSData>?)
@ -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) {

12
SocketIOClientSwift/SocketIOClient.swift Normal file → Executable file
View File

@ -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<SocketPacket>()
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)
}
/**