@@ -47,7 +47,7 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
4747 public private( set) var session : NSURLSession ?
4848 public private( set) var sid = " "
4949 public private( set) var socketPath = " /engine.io/ "
50- public private( set) var urlPolling = " "
50+ public private( set) var urlPolling = NSURL ( )
5151 public private( set) var urlWebSocket = NSURL ( )
5252 public private( set) var websocket = false
5353 public private( set) var ws : WebSocket ?
@@ -199,56 +199,38 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
199199 }
200200 }
201201
202- private func createURLs( params: [ String : AnyObject ] ? ) -> ( String , NSURL ) {
202+ private func createURLs( params: [ String : AnyObject ] ? ) -> ( NSURL , NSURL ) {
203203 if client == nil {
204- return ( " " , NSURL ( ) )
204+ return ( NSURL ( ) , NSURL ( ) )
205205 }
206206
207- let absURL = url. absoluteString [ " https?:// " ] <~ " "
208- let baseURL : String
209-
210- if absURL. hasSuffix ( " / " ) {
211- baseURL = String ( absURL. characters. dropLast ( ) )
212- } else {
213- baseURL = absURL
214- }
215-
216- let socketURL = " \( baseURL) \( socketPath) /?transport= "
217- var urlPolling : String
218- var queryString = " transport=websocket "
207+ let urlPolling = NSURLComponents ( string: url. absoluteString) !
219208 let urlWebSocket = NSURLComponents ( string: url. absoluteString) !
209+ var queryString = " "
220210
221211 urlWebSocket. path = socketPath
212+ urlPolling. path = socketPath
213+ urlWebSocket. query = " transport=websocket "
214+ urlPolling. query = " transport=polling&b64=1 "
222215
223216 if secure {
224- urlPolling = " https:// " + socketURL + " polling "
217+ urlPolling. scheme = " https "
225218 urlWebSocket. scheme = " wss "
226219 } else {
227- urlPolling = " http:// " + socketURL + " polling "
220+ urlPolling. scheme = " http "
228221 urlWebSocket. scheme = " ws "
229222 }
230223
231224 if params != nil {
232225 for (key, value) in params! {
233- let keyEsc = key. stringByAddingPercentEncodingWithAllowedCharacters (
234- allowedCharacterSet) !
235- urlPolling += " & \( keyEsc) = "
236- queryString += " & \( keyEsc) = "
237-
238- if value is String {
239- let valueEsc = ( value as! String ) . stringByAddingPercentEncodingWithAllowedCharacters (
240- allowedCharacterSet) !
241- urlPolling += String ( valueEsc)
242- queryString += String ( value)
243- } else {
244- urlPolling += String ( value)
245- queryString += String ( value)
246- }
226+ queryString += " & \( key) = \( value) "
247227 }
248228 }
249229
250- urlWebSocket. query = queryString
251- return ( urlPolling, urlWebSocket. URL!)
230+ urlWebSocket. query = urlWebSocket. query! + queryString
231+ urlPolling. query = urlPolling. query! + queryString
232+
233+ return ( urlPolling. URL!, urlWebSocket. URL!)
252234 }
253235
254236 private func createWebsocketAndConnect( ) {
@@ -411,7 +393,7 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb
411393 return
412394 }
413395
414- let reqPolling = NSMutableURLRequest ( URL: NSURL ( string : urlPolling + " &b64=1 " ) ! )
396+ let reqPolling = NSMutableURLRequest ( URL: urlPolling)
415397
416398 if cookies != nil {
417399 let headers = NSHTTPCookie . requestHeaderFieldsWithCookies ( cookies!)
0 commit comments