Added passing cookies from long polling session to web scoket

This commit is contained in:
Erasov Ivan 2018-07-18 15:23:10 +03:00
parent d07441e7fa
commit 64d2527190
2 changed files with 10 additions and 5 deletions

View File

@ -281,7 +281,7 @@ open class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePollable, So
private func createWebSocketAndConnect() { private func createWebSocketAndConnect() {
var req = URLRequest(url: urlWebSocketWithSid) var req = URLRequest(url: urlWebSocketWithSid)
addHeaders(to: &req) addHeaders(to: &req, includingCookies: session?.configuration.httpCookieStorage?.cookies)
ws = WebSocket(request: req) ws = WebSocket(request: req)
ws?.callbackQueue = engineQueue ws?.callbackQueue = engineQueue

View File

@ -155,11 +155,16 @@ extension SocketEngineSpec {
return com.url! return com.url!
} }
func addHeaders(to req: inout URLRequest) { func addHeaders(to req: inout URLRequest, includingCookies additionalCookies: [HTTPCookie]? = nil) {
if let cookies = cookies {
req.allHTTPHeaderFields = HTTPCookie.requestHeaderFields(with: cookies) var cookiesToAdd = [HTTPCookie]()
cookiesToAdd += cookies ?? []
cookiesToAdd += additionalCookies ?? []
if !cookiesToAdd.isEmpty {
req.allHTTPHeaderFields = HTTPCookie.requestHeaderFields(with: cookiesToAdd)
} }
if let extraHeaders = extraHeaders { if let extraHeaders = extraHeaders {
for (headerName, value) in extraHeaders { for (headerName, value) in extraHeaders {
req.setValue(value, forHTTPHeaderField: headerName) req.setValue(value, forHTTPHeaderField: headerName)