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