add reconnectAttempts event and ability to try infinitly

This commit is contained in:
Erik 2015-01-07 16:27:51 -05:00
parent b8ff014067
commit 1492bf5dc4
2 changed files with 21 additions and 11 deletions

View File

@ -16,7 +16,7 @@ Use
// opts can be omitted, will use default values
let socket = SocketIOClient(socketURL: "https://localhost:8080", opts: [
"reconnects": true, // default true
"reconnectAttempts": 5, // default 10
"reconnectAttempts": 5, // default -1 (infinite tries)
"reconnectWait": 5 // default 10
])
@ -40,6 +40,12 @@ socket.on("reconnect") {data in
}
}
socket.on("reconnectAttempt") {data in
if let triesLeft = data as? Int {
println(triesLeft)
}
}
socket.on("jsonTest") {data in
if let json = data as? NSDictionary {
println(json["test"]!) // foo bar

View File

@ -42,7 +42,7 @@ private class EventHandler: NSObject {
}
}
private struct Event {
private class Event {
var event:String!
var args:AnyObject!
var placeholders:Int!
@ -94,7 +94,7 @@ private struct Event {
}
}
mutating func fillInPlaceHolder(data:NSData) -> Bool {
func fillInPlaceHolder(data:NSData) -> Bool {
func checkDoEvent() -> Bool {
if (self.placeholders == self.currentPlace) {
return true
@ -130,7 +130,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
var pingTimer:NSTimer!
var reconnnects = true
var reconnecting = false
var reconnectAttempts = 10
var reconnectAttempts = -1
var reconnectWait = 10
init(socketURL:String, opts:[String: AnyObject]? = nil) {
@ -153,7 +153,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
}
if let reconnectAttempts = opts!["reconnectAttempts"] as? Int {
self.reconnectAttempts = abs(reconnectAttempts)
self.reconnectAttempts = reconnectAttempts
}
if let reconnectWait = opts!["reconnectWait"] as? Int {
@ -410,10 +410,9 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
// Sends ping
func sendPing() {
if (!self.connected) {
return
if (self.connected) {
self.io?.send("2")
}
self.io?.send("2")
}
// Starts the ping timer
@ -423,8 +422,8 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
}
// We lost connection and should attempt to reestablish
private func tryReconnect(#triesLeft:Int) {
if (triesLeft <= 0) {
private func tryReconnect(var #triesLeft:Int) {
if (triesLeft != -1 && triesLeft <= 0) {
self.connecting = false
self.reconnnects = false
self.reconnecting = false
@ -437,6 +436,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
}
// println("Trying to reconnect #\(reconnectAttempts - triesLeft)")
self.handleEvent(event: "reconnectAttempt", data: triesLeft)
let waitTime = UInt64(self.reconnectWait) * NSEC_PER_SEC
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(waitTime))
@ -447,7 +447,11 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
return
}
self!.tryReconnect(triesLeft: triesLeft - 1)
if (triesLeft != -1) {
triesLeft = triesLeft - 1
}
self!.tryReconnect(triesLeft: triesLeft)
}
self.reconnecting = true
self.connect()