Skip to content

Commit a49f8f1

Browse files
committed
add extraHeaders option fixes. nuclearace/Socket.IO-Client-Swift#64
1 parent 531a978 commit a49f8f1

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ Options
110110
- `log: Bool` If `true` socket will log debug messages. Default is false.
111111
- `sessionDelegate: NSURLSessionDelegate` Sets an NSURLSessionDelegate for the underlying engine. Useful if you need to handle self-signed certs. Default is nil.
112112
- `path: String` - If the server uses a custom path. ex: `"/swift"`. Default is `""`
113+
- `extraHeaders: [String: String]?` - Adds custom headers to the initial request. Default is nil.
113114

114115
Methods
115116
-------

SocketIOClientSwift/SocketEngine.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
3737

3838
private var closed = false
3939
private var _connected = false
40+
private var extraHeaders:[String: String]?
4041
private var fastUpgrade = false
4142
private var forcePolling = false
4243
private var forceWebsockets = false
@@ -109,6 +110,7 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
109110
cookies = opts?["cookies"] as? [NSHTTPCookie]
110111
log = opts?["log"] as? Bool ?? false
111112
socketPath = opts?["path"] as? String ?? ""
113+
extraHeaders = opts?["extraHeaders"] as? [String: String]
112114
}
113115

114116
deinit {
@@ -194,6 +196,13 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
194196
private func createWebsocket(andConnect connect:Bool) {
195197
ws = WebSocket(url: NSURL(string: urlWebSocket! + "&sid=\(sid)")!,
196198
cookies: cookies)
199+
200+
if extraHeaders != nil {
201+
for (headerName, value) in extraHeaders! {
202+
ws?.headers[headerName] = value
203+
}
204+
}
205+
197206
ws?.queue = handleQueue
198207
ws?.delegate = self
199208

@@ -229,6 +238,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
229238
req.allHTTPHeaderFields = headers
230239
}
231240

241+
if extraHeaders != nil {
242+
for (headerName, value) in extraHeaders! {
243+
req.setValue(value, forHTTPHeaderField: headerName)
244+
}
245+
}
246+
232247
doRequest(req)
233248
}
234249

@@ -477,6 +492,12 @@ public final class SocketEngine: NSObject, WebSocketDelegate, SocketLogClient {
477492
reqPolling.allHTTPHeaderFields = headers
478493
}
479494

495+
if extraHeaders != nil {
496+
for (headerName, value) in extraHeaders! {
497+
reqPolling.setValue(value, forHTTPHeaderField: headerName)
498+
}
499+
}
500+
480501
doRequest(reqPolling)
481502
}
482503

0 commit comments

Comments
 (0)