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 sid = ""
|
||||
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 websocket = false
|
||||
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 {
|
||||
return ("", NSURL())
|
||||
return (NSURL(), NSURL())
|
||||
}
|
||||
|
||||
let absURL = url.absoluteString["https?://"] <~ ""
|
||||
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 urlPolling = NSURLComponents(string: url.absoluteString)!
|
||||
let urlWebSocket = NSURLComponents(string: url.absoluteString)!
|
||||
var queryString = ""
|
||||
|
||||
urlWebSocket.path = socketPath
|
||||
urlPolling.path = socketPath
|
||||
urlWebSocket.query = "transport=websocket"
|
||||
urlPolling.query = "transport=polling&b64=1"
|
||||
|
||||
if secure {
|
||||
urlPolling = "https://" + socketURL + "polling"
|
||||
urlPolling.scheme = "https"
|
||||
urlWebSocket.scheme = "wss"
|
||||
} else {
|
||||
urlPolling = "http://" + socketURL + "polling"
|
||||
urlPolling.scheme = "http"
|
||||
urlWebSocket.scheme = "ws"
|
||||
}
|
||||
|
||||
if params != nil {
|
||||
for (key, value) in params! {
|
||||
let keyEsc = key.stringByAddingPercentEncodingWithAllowedCharacters(
|
||||
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)
|
||||
}
|
||||
queryString += "&\(key)=\(value)"
|
||||
}
|
||||
}
|
||||
|
||||
urlWebSocket.query = queryString
|
||||
return (urlPolling, urlWebSocket.URL!)
|
||||
urlWebSocket.query = urlWebSocket.query! + queryString
|
||||
urlPolling.query = urlPolling.query! + queryString
|
||||
|
||||
return (urlPolling.URL!, urlWebSocket.URL!)
|
||||
}
|
||||
|
||||
private func createWebsocketAndConnect() {
|
||||
@ -411,7 +393,7 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
|
||||
return
|
||||
}
|
||||
|
||||
let reqPolling = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&b64=1")!)
|
||||
let reqPolling = NSMutableURLRequest(URL: urlPolling)
|
||||
|
||||
if cookies != nil {
|
||||
let headers = NSHTTPCookie.requestHeaderFieldsWithCookies(cookies!)
|
||||
|
||||
@ -71,7 +71,7 @@ extension SocketEnginePollable {
|
||||
|
||||
postWait.removeAll(keepCapacity: false)
|
||||
|
||||
let req = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&sid=\(sid)")!)
|
||||
let req = NSMutableURLRequest(URL: urlPollingWithSid)
|
||||
|
||||
addHeaders(req)
|
||||
|
||||
@ -93,7 +93,7 @@ extension SocketEnginePollable {
|
||||
}
|
||||
|
||||
waitingForPoll = true
|
||||
let req = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&sid=\(sid)&b64=1")!)
|
||||
let req = NSMutableURLRequest(URL: urlPollingWithSid)
|
||||
|
||||
addHeaders(req)
|
||||
doLongPoll(req)
|
||||
|
||||
@ -42,7 +42,7 @@ import Foundation
|
||||
var handleQueue: dispatch_queue_t! { get }
|
||||
var sid: String { get }
|
||||
var socketPath: String { get }
|
||||
var urlPolling: String { get }
|
||||
var urlPolling: NSURL { get }
|
||||
var urlWebSocket: NSURL { get }
|
||||
var websocket: Bool { get }
|
||||
|
||||
@ -59,6 +59,13 @@ import Foundation
|
||||
}
|
||||
|
||||
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> {
|
||||
if websocket {
|
||||
var byteArray = [UInt8](count: 1, repeatedValue: 0x4)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user