send connect event on polling connect
This commit is contained in:
parent
6e4aa4eee4
commit
7f22dc8f42
@ -72,7 +72,6 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
var url = "\(self.client.socketURL)/socket.io/?transport="
|
||||
var urlPolling:String
|
||||
var urlWebSocket:String
|
||||
let time = Int(NSDate().timeIntervalSince1970 * 1000)
|
||||
|
||||
if self.client.secure {
|
||||
urlPolling = "https://" + url + "polling"
|
||||
@ -115,9 +114,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
NSURLConnection.sendAsynchronousRequest(req, queue: self.pollingQueue) {[weak self] res, data, err in
|
||||
if self == nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
} else if err != nil {
|
||||
println(err)
|
||||
return
|
||||
}
|
||||
@ -125,6 +122,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
let str = NSString(data: data, encoding: NSUTF8StringEncoding)
|
||||
|
||||
println(str)
|
||||
|
||||
// TODO parse packets
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,10 +168,12 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
options: NSJSONReadingOptions.AllowFragments, error: &err) as? NSDictionary {
|
||||
if let sid = json["sid"] as? String {
|
||||
self?.sid = sid
|
||||
|
||||
self?.client.didConnect()
|
||||
self?.client.handleEvent("connect", data: nil, isInternalMessage: false)
|
||||
|
||||
self?.ws = SRWebSocket(URL: NSURL(string: urlWebSocket + "&sid=\(self!.sid)")!)
|
||||
self?.ws?.delegate = self
|
||||
//self?.ws?.open()
|
||||
self?.ws?.open()
|
||||
|
||||
} else {
|
||||
NSLog("Error handshaking")
|
||||
@ -208,7 +209,6 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
// We should upgrade
|
||||
if strMessage == "3probe" {
|
||||
self.upgradeTransport()
|
||||
self.pollingTimer?.invalidate()
|
||||
return
|
||||
}
|
||||
|
||||
@ -246,7 +246,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
self.ws?.send(PacketType.PING.rawValue)
|
||||
} else {
|
||||
let time = Int(NSDate().timeIntervalSince1970)
|
||||
var req = NSMutableURLRequest(URL: NSURL(string: self.urlPolling! + "&t=\(time)-0&b64=1" + "&sid=\(self.sid)")!)
|
||||
var req = NSMutableURLRequest(URL: NSURL(string:
|
||||
self.urlPolling! + "&t=\(time)-0&b64=1" + "&sid=\(self.sid)")!)
|
||||
let postStr = "1:\(PacketType.PING.rawValue)"
|
||||
let postData = postStr.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
|
||||
let postLength = "\(postData.length)"
|
||||
@ -256,17 +257,20 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
req.setValue("application/html-text", forHTTPHeaderField: "Content-Type")
|
||||
req.HTTPBody = postData
|
||||
|
||||
NSURLConnection.sendAsynchronousRequest(req, queue: self.pollingQueue) {[weak self] res, data, err in
|
||||
if err != nil {
|
||||
println(err)
|
||||
self?.pingTimer?.invalidate()
|
||||
if !self!.client.reconnecting {
|
||||
self?.client.tryReconnect(triesLeft: self!.client.reconnectAttempts)
|
||||
NSURLConnection.sendAsynchronousRequest(req,
|
||||
queue: self.pollingQueue) {[weak self] res, data, err in
|
||||
if self == nil {
|
||||
return
|
||||
} else if err != nil {
|
||||
println(err)
|
||||
self?.pingTimer?.invalidate()
|
||||
if !self!.client.reconnecting {
|
||||
self?.client.tryReconnect(triesLeft: self!.client.reconnectAttempts)
|
||||
}
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
self?.doPoll()
|
||||
|
||||
self?.doPoll()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -292,6 +296,7 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
if self.websocketConnected {
|
||||
self._websocket = true
|
||||
self._polling = false
|
||||
self.pollingTimer?.invalidate()
|
||||
self.ws?.send(PacketType.UPGRADE.rawValue)
|
||||
}
|
||||
}
|
||||
@ -306,7 +311,6 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
// Called when the socket is opened
|
||||
func webSocketDidOpen(webSocket:SRWebSocket!) {
|
||||
println("socket opened")
|
||||
self.startPingTimer()
|
||||
self.websocketConnected = true
|
||||
self.probeWebSocket()
|
||||
}
|
||||
@ -316,6 +320,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
println("socket closed")
|
||||
self.pingTimer?.invalidate()
|
||||
self.websocketConnected = false
|
||||
self._websocket = false
|
||||
self._polling = true
|
||||
|
||||
// Temp
|
||||
self.client.webSocket(webSocket, didCloseWithCode: code, reason: reason, wasClean: wasClean)
|
||||
@ -325,6 +331,8 @@ class SocketEngine: NSObject, SRWebSocketDelegate {
|
||||
func webSocket(webSocket:SRWebSocket!, didFailWithError error:NSError!) {
|
||||
self.pingTimer?.invalidate()
|
||||
self.websocketConnected = false
|
||||
self._websocket = false
|
||||
self._polling = true
|
||||
|
||||
// Temp
|
||||
self.client.webSocket(webSocket, didFailWithError: error)
|
||||
|
||||
@ -39,7 +39,6 @@ class SocketIOClient: NSObject {
|
||||
private var handlers = [SocketEventHandler]()
|
||||
private var lastSocketMessage:SocketEvent?
|
||||
private var paramConnect = false
|
||||
private var pingTimer:NSTimer!
|
||||
private var _secure = false
|
||||
var closed = false
|
||||
var connected = false
|
||||
@ -92,7 +91,6 @@ class SocketIOClient: NSObject {
|
||||
|
||||
// Closes the socket
|
||||
func close() {
|
||||
self.pingTimer?.invalidate()
|
||||
self.closed = true
|
||||
self.connecting = false
|
||||
self.connected = false
|
||||
@ -121,6 +119,12 @@ class SocketIOClient: NSObject {
|
||||
return mutData
|
||||
}
|
||||
|
||||
func didConnect() {
|
||||
self.connected = true
|
||||
self.connecting = false
|
||||
self.reconnecting = false
|
||||
}
|
||||
|
||||
// Sends a message with multiple args
|
||||
// If a message contains binary we have to send those
|
||||
// seperately.
|
||||
@ -821,7 +825,6 @@ class SocketIOClient: NSObject {
|
||||
|
||||
// Called when the socket is closed
|
||||
func webSocket(webSocket:SRWebSocket!, didCloseWithCode code:Int, reason:String!, wasClean:Bool) {
|
||||
self.pingTimer?.invalidate()
|
||||
self.connected = false
|
||||
self.connecting = false
|
||||
if self.closed || !self.reconnects {
|
||||
@ -835,7 +838,6 @@ class SocketIOClient: NSObject {
|
||||
|
||||
// Called when an error occurs.
|
||||
func webSocket(webSocket:SRWebSocket!, didFailWithError error:NSError!) {
|
||||
self.pingTimer?.invalidate()
|
||||
self.connected = false
|
||||
self.connecting = false
|
||||
self.handleEvent("error", data: error.localizedDescription, isInternalMessage: true)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user