send connect event on polling connect

This commit is contained in:
Erik 2015-03-04 10:04:26 -05:00
parent 6e4aa4eee4
commit 7f22dc8f42
2 changed files with 33 additions and 23 deletions

View File

@ -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)

View File

@ -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)