Merge pull request #1049 from pdupris/enableSOCKSProxy

Add enableSOCKSProxy option to pass to Starscream WebSockets
This commit is contained in:
Erik Little 2019-05-28 08:50:11 -04:00 committed by GitHub
commit c1744e9e6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 1 deletions

View File

@ -53,6 +53,9 @@ public enum SocketIOClientOption : ClientOption {
/// If passed `true`, the only transport that will be used will be WebSockets. /// If passed `true`, the only transport that will be used will be WebSockets.
case forceWebsockets(Bool) case forceWebsockets(Bool)
/// If passed `true`, the WebSocket stream will be configured with the enableSOCKSProxy `true`.
case enableSOCKSProxy(Bool)
/// The queue that all interaction with the client should occur on. This is the queue that event handlers are /// The queue that all interaction with the client should occur on. This is the queue that event handlers are
/// called on. /// called on.
/// ///
@ -143,6 +146,8 @@ public enum SocketIOClientOption : ClientOption {
description = "security" description = "security"
case .sessionDelegate: case .sessionDelegate:
description = "sessionDelegate" description = "sessionDelegate"
case .enableSOCKSProxy:
description = "enableSOCKSProxy"
} }
return description return description
@ -192,6 +197,8 @@ public enum SocketIOClientOption : ClientOption {
value = signed value = signed
case let .sessionDelegate(delegate): case let .sessionDelegate(delegate):
value = delegate value = delegate
case let .enableSOCKSProxy(enable):
value = enable
} }
return value return value

View File

@ -114,6 +114,9 @@ open class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePollable, So
@available(*, deprecated, message: "No longer needed, if we're not polling, then we must be doing websockets") @available(*, deprecated, message: "No longer needed, if we're not polling, then we must be doing websockets")
public private(set) var websocket = false public private(set) var websocket = false
/// When `true`, the WebSocket `stream` will be configured with the enableSOCKSProxy `true`.
public private(set) var enableSOCKSProxy = false
/// The WebSocket for this engine. /// The WebSocket for this engine.
public private(set) var ws: WebSocket? public private(set) var ws: WebSocket?
@ -283,7 +286,9 @@ open class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePollable, So
addHeaders(to: &req, includingCookies: session?.configuration.httpCookieStorage?.cookies(for: urlPollingWithSid)) addHeaders(to: &req, includingCookies: session?.configuration.httpCookieStorage?.cookies(for: urlPollingWithSid))
ws = WebSocket(request: req) let stream = FoundationStream()
stream.enableSOCKSProxy = enableSOCKSProxy
ws = WebSocket(request: req, stream: stream)
ws?.callbackQueue = engineQueue ws?.callbackQueue = engineQueue
ws?.enableCompression = compress ws?.enableCompression = compress
ws?.disableSSLCertValidation = selfSigned ws?.disableSSLCertValidation = selfSigned
@ -593,6 +598,8 @@ open class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePollable, So
self.security = security self.security = security
case .compress: case .compress:
self.compress = true self.compress = true
case .enableSOCKSProxy:
self.enableSOCKSProxy = true
default: default:
continue continue
} }

View File

@ -85,6 +85,8 @@ extension Dictionary where Key == String, Value == Any {
return .sessionDelegate(delegate) return .sessionDelegate(delegate)
case let ("compress", compress as Bool): case let ("compress", compress as Bool):
return compress ? .compress : nil return compress ? .compress : nil
case let ("enableSOCKSProxy", enable as Bool):
return .enableSOCKSProxy(enable)
default: default:
return nil return nil
} }