Skip to content

Commit ea3bd02

Browse files
ramram
authored andcommitted
Adding a NSURLSessionDelegate to socket client options and in turn to socket engine to allow support for cases like self-signed certificates
1 parent 06f04a0 commit ea3bd02

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

SocketIOClientSwift/SocketEngine.swift

100644100755
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424

2525
import Foundation
2626

27-
extension String {
28-
private var length:Int {
29-
return count(self)
30-
}
31-
}
27+
//extension String {
28+
// private var length:Int {
29+
// return count(self)
30+
// }
31+
//}
3232

3333
public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
3434
private typealias Probe = (msg:String, type:PacketType, data:ContiguousArray<NSData>?)
@@ -93,14 +93,14 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
9393
}
9494

9595
public init(client:SocketEngineClient, forcePolling:Bool,
96-
forceWebsockets:Bool, withCookies cookies:[NSHTTPCookie]?, logging:Bool) {
96+
forceWebsockets:Bool, withCookies cookies:[NSHTTPCookie]?, logging:Bool, withSessionDelegate sessionDelegate : NSURLSessionDelegate?) {
9797
self.client = client
9898
self.forcePolling = forcePolling
9999
self.forceWebsockets = forceWebsockets
100100
self.cookies = cookies
101101
self.log = logging
102102
self.session = NSURLSession(configuration: NSURLSessionConfiguration.ephemeralSessionConfiguration(),
103-
delegate: nil, delegateQueue: self.workQueue)
103+
delegate: sessionDelegate, delegateQueue: self.workQueue)
104104
}
105105

106106
public func close(#fast:Bool) {

SocketIOClientSwift/SocketIOClient.swift

100644100755
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import Foundation
2626

27-
public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient {
27+
public final class SocketIOClient: NSObject, NSURLSessionDelegate, SocketEngineClient, SocketLogClient {
2828
private lazy var params = [String: AnyObject]()
2929
private var anyHandler:((SocketAnyEvent) -> Void)?
3030
private var _closed = false
@@ -40,13 +40,16 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
4040
private var _reconnecting = false
4141
private var reconnectTimer:NSTimer?
4242

43+
4344
let reconnectAttempts:Int!
4445
let logType = "SocketClient"
4546
var ackHandlers = SocketAckMap()
4647
var currentAck = -1
4748
var log = false
4849
var waitingData = ContiguousArray<SocketPacket>()
4950

51+
var sessionDelegate : NSURLSessionDelegate?
52+
5053
public let socketURL:String
5154
public let handleAckQueue = dispatch_queue_create("handleAckQueue", DISPATCH_QUEUE_SERIAL)
5255
public let handleQueue = dispatch_queue_create("handleQueue", DISPATCH_QUEUE_SERIAL)
@@ -90,6 +93,10 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
9093

9194
// Set options
9295
if opts != nil {
96+
if let sessionDelegate = opts!["sessionDelegate"] as? NSURLSessionDelegate {
97+
self.sessionDelegate = sessionDelegate
98+
}
99+
93100
if let cookies = opts!["cookies"] as? [NSHTTPCookie] {
94101
self.cookies = cookies
95102
}
@@ -145,7 +152,8 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
145152
forcePolling: self.forcePolling,
146153
forceWebsockets: self.forceWebsockets,
147154
withCookies: self.cookies,
148-
logging: self.log)
155+
logging: self.log,
156+
withSessionDelegate : self.sessionDelegate)
149157
}
150158

151159
/**

0 commit comments

Comments
 (0)