engine polling to nsurl
This commit is contained in:
parent
d912796fa5
commit
b67b6abbdf
@ -47,7 +47,7 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
|
|||||||
public private(set) var session: NSURLSession?
|
public private(set) var session: NSURLSession?
|
||||||
public private(set) var sid = ""
|
public private(set) var sid = ""
|
||||||
public private(set) var socketPath = "/engine.io/"
|
public private(set) var socketPath = "/engine.io/"
|
||||||
public private(set) var urlPolling = ""
|
public private(set) var urlPolling = NSURL()
|
||||||
public private(set) var urlWebSocket = NSURL()
|
public private(set) var urlWebSocket = NSURL()
|
||||||
public private(set) var websocket = false
|
public private(set) var websocket = false
|
||||||
public private(set) var ws: WebSocket?
|
public private(set) var ws: WebSocket?
|
||||||
@ -199,56 +199,38 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createURLs(params: [String: AnyObject]?) -> (String, NSURL) {
|
private func createURLs(params: [String: AnyObject]?) -> (NSURL, NSURL) {
|
||||||
if client == nil {
|
if client == nil {
|
||||||
return ("", NSURL())
|
return (NSURL(), NSURL())
|
||||||
}
|
}
|
||||||
|
|
||||||
let absURL = url.absoluteString["https?://"] <~ ""
|
let urlPolling = NSURLComponents(string: url.absoluteString)!
|
||||||
let baseURL: String
|
|
||||||
|
|
||||||
if absURL.hasSuffix("/") {
|
|
||||||
baseURL = String(absURL.characters.dropLast())
|
|
||||||
} else {
|
|
||||||
baseURL = absURL
|
|
||||||
}
|
|
||||||
|
|
||||||
let socketURL = "\(baseURL)\(socketPath)/?transport="
|
|
||||||
var urlPolling: String
|
|
||||||
var queryString = "transport=websocket"
|
|
||||||
let urlWebSocket = NSURLComponents(string: url.absoluteString)!
|
let urlWebSocket = NSURLComponents(string: url.absoluteString)!
|
||||||
|
var queryString = ""
|
||||||
|
|
||||||
urlWebSocket.path = socketPath
|
urlWebSocket.path = socketPath
|
||||||
|
urlPolling.path = socketPath
|
||||||
|
urlWebSocket.query = "transport=websocket"
|
||||||
|
urlPolling.query = "transport=polling&b64=1"
|
||||||
|
|
||||||
if secure {
|
if secure {
|
||||||
urlPolling = "https://" + socketURL + "polling"
|
urlPolling.scheme = "https"
|
||||||
urlWebSocket.scheme = "wss"
|
urlWebSocket.scheme = "wss"
|
||||||
} else {
|
} else {
|
||||||
urlPolling = "http://" + socketURL + "polling"
|
urlPolling.scheme = "http"
|
||||||
urlWebSocket.scheme = "ws"
|
urlWebSocket.scheme = "ws"
|
||||||
}
|
}
|
||||||
|
|
||||||
if params != nil {
|
if params != nil {
|
||||||
for (key, value) in params! {
|
for (key, value) in params! {
|
||||||
let keyEsc = key.stringByAddingPercentEncodingWithAllowedCharacters(
|
queryString += "&\(key)=\(value)"
|
||||||
allowedCharacterSet)!
|
|
||||||
urlPolling += "&\(keyEsc)="
|
|
||||||
queryString += "&\(keyEsc)="
|
|
||||||
|
|
||||||
if value is String {
|
|
||||||
let valueEsc = (value as! String).stringByAddingPercentEncodingWithAllowedCharacters(
|
|
||||||
allowedCharacterSet)!
|
|
||||||
urlPolling += String(valueEsc)
|
|
||||||
queryString += String(value)
|
|
||||||
} else {
|
|
||||||
urlPolling += String(value)
|
|
||||||
queryString += String(value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
urlWebSocket.query = queryString
|
urlWebSocket.query = urlWebSocket.query! + queryString
|
||||||
return (urlPolling, urlWebSocket.URL!)
|
urlPolling.query = urlPolling.query! + queryString
|
||||||
|
|
||||||
|
return (urlPolling.URL!, urlWebSocket.URL!)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createWebsocketAndConnect() {
|
private func createWebsocketAndConnect() {
|
||||||
@ -411,7 +393,7 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let reqPolling = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&b64=1")!)
|
let reqPolling = NSMutableURLRequest(URL: urlPolling)
|
||||||
|
|
||||||
if cookies != nil {
|
if cookies != nil {
|
||||||
let headers = NSHTTPCookie.requestHeaderFieldsWithCookies(cookies!)
|
let headers = NSHTTPCookie.requestHeaderFieldsWithCookies(cookies!)
|
||||||
|
|||||||
@ -71,7 +71,7 @@ extension SocketEnginePollable {
|
|||||||
|
|
||||||
postWait.removeAll(keepCapacity: false)
|
postWait.removeAll(keepCapacity: false)
|
||||||
|
|
||||||
let req = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&sid=\(sid)")!)
|
let req = NSMutableURLRequest(URL: urlPollingWithSid)
|
||||||
|
|
||||||
addHeaders(req)
|
addHeaders(req)
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ extension SocketEnginePollable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
waitingForPoll = true
|
waitingForPoll = true
|
||||||
let req = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&sid=\(sid)&b64=1")!)
|
let req = NSMutableURLRequest(URL: urlPollingWithSid)
|
||||||
|
|
||||||
addHeaders(req)
|
addHeaders(req)
|
||||||
doLongPoll(req)
|
doLongPoll(req)
|
||||||
|
|||||||
@ -42,7 +42,7 @@ import Foundation
|
|||||||
var handleQueue: dispatch_queue_t! { get }
|
var handleQueue: dispatch_queue_t! { get }
|
||||||
var sid: String { get }
|
var sid: String { get }
|
||||||
var socketPath: String { get }
|
var socketPath: String { get }
|
||||||
var urlPolling: String { get }
|
var urlPolling: NSURL { get }
|
||||||
var urlWebSocket: NSURL { get }
|
var urlWebSocket: NSURL { get }
|
||||||
var websocket: Bool { get }
|
var websocket: Bool { get }
|
||||||
|
|
||||||
@ -59,6 +59,13 @@ import Foundation
|
|||||||
}
|
}
|
||||||
|
|
||||||
extension SocketEngineSpec {
|
extension SocketEngineSpec {
|
||||||
|
var urlPollingWithSid: NSURL {
|
||||||
|
let com = NSURLComponents(URL: urlPolling, resolvingAgainstBaseURL: false)!
|
||||||
|
com.query = com.query! + "&sid=\(sid)"
|
||||||
|
|
||||||
|
return com.URL!
|
||||||
|
}
|
||||||
|
|
||||||
func createBinaryDataForSend(data: NSData) -> Either<NSData, String> {
|
func createBinaryDataForSend(data: NSData) -> Either<NSData, String> {
|
||||||
if websocket {
|
if websocket {
|
||||||
var byteArray = [UInt8](count: 1, repeatedValue: 0x4)
|
var byteArray = [UInt8](count: 1, repeatedValue: 0x4)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user