@@ -42,7 +42,6 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
42
42
private let handleQueue = dispatch_queue_create ( " com.socketio.engineHandleQueue " , DISPATCH_QUEUE_SERIAL)
43
43
private let logType = " SocketEngine "
44
44
private let parseQueue = dispatch_queue_create ( " com.socketio.engineParseQueue " , DISPATCH_QUEUE_SERIAL)
45
- private let session : NSURLSession !
46
45
private let workQueue = NSOperationQueue ( )
47
46
48
47
private var closed = false
@@ -63,6 +62,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
63
62
private var postWait = [ String] ( )
64
63
private var probing = false
65
64
private var probeWait = ProbeWaitQueue ( )
65
+ private var session : NSURLSession !
66
66
private var waitingForPoll = false
67
67
private var waitingForPost = false
68
68
private var websocketConnected = false
@@ -71,16 +71,33 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
71
71
private( set) var polling = true
72
72
private( set) var websocket = false
73
73
74
- public init ( client: SocketEngineClient , opts : NSDictionary ? ) {
74
+ init ( client: SocketEngineClient , options : Set < SocketIOClientOption > ) {
75
75
self . client = client
76
- session = NSURLSession ( configuration: . defaultSessionConfiguration( ) ,
77
- delegate: opts ? [ " sessionDelegate " ] as? NSURLSessionDelegate ,
78
- delegateQueue: workQueue)
79
- forceWebsockets = opts ? [ " forceWebsockets " ] as? Bool ?? false
80
- forcePolling = opts ? [ " forcePolling " ] as? Bool ?? false
81
- cookies = opts ? [ " cookies " ] as? [ NSHTTPCookie ]
82
- socketPath = opts ? [ " path " ] as? String ?? " "
83
- extraHeaders = opts ? [ " extraHeaders " ] as? [ String : String ]
76
+ for option in options {
77
+ switch option {
78
+ case . SessionDelegate( let delegate) :
79
+ session = NSURLSession ( configuration: . defaultSessionConfiguration( ) ,
80
+ delegate: delegate,
81
+ delegateQueue: workQueue)
82
+ case . ForcePolling( let force) :
83
+ forcePolling = force
84
+ case . ForceWebsockets( let force) :
85
+ forceWebsockets = force
86
+ case . Cookies( let cookies) :
87
+ self . cookies = cookies
88
+ case . Path( let path) :
89
+ socketPath = path
90
+ case . ExtraHeaders( let headers) :
91
+ extraHeaders = headers
92
+ default :
93
+ continue
94
+ }
95
+ }
96
+ }
97
+
98
+ public convenience init ( client: SocketEngineClient , options: NSDictionary ? ) {
99
+ self . init ( client: client,
100
+ options: SocketIOClientOption . NSDictionaryToSocketOptionsSet ( options ?? [ : ] ) )
84
101
}
85
102
86
103
deinit {
0 commit comments