add reconnectAttempts event and ability to try infinitly
This commit is contained in:
parent
b8ff014067
commit
1492bf5dc4
@ -16,7 +16,7 @@ Use
|
|||||||
// opts can be omitted, will use default values
|
// opts can be omitted, will use default values
|
||||||
let socket = SocketIOClient(socketURL: "https://localhost:8080", opts: [
|
let socket = SocketIOClient(socketURL: "https://localhost:8080", opts: [
|
||||||
"reconnects": true, // default true
|
"reconnects": true, // default true
|
||||||
"reconnectAttempts": 5, // default 10
|
"reconnectAttempts": 5, // default -1 (infinite tries)
|
||||||
"reconnectWait": 5 // default 10
|
"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
|
socket.on("jsonTest") {data in
|
||||||
if let json = data as? NSDictionary {
|
if let json = data as? NSDictionary {
|
||||||
println(json["test"]!) // foo bar
|
println(json["test"]!) // foo bar
|
||||||
|
|||||||
@ -42,7 +42,7 @@ private class EventHandler: NSObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct Event {
|
private class Event {
|
||||||
var event:String!
|
var event:String!
|
||||||
var args:AnyObject!
|
var args:AnyObject!
|
||||||
var placeholders:Int!
|
var placeholders:Int!
|
||||||
@ -94,7 +94,7 @@ private struct Event {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mutating func fillInPlaceHolder(data:NSData) -> Bool {
|
func fillInPlaceHolder(data:NSData) -> Bool {
|
||||||
func checkDoEvent() -> Bool {
|
func checkDoEvent() -> Bool {
|
||||||
if (self.placeholders == self.currentPlace) {
|
if (self.placeholders == self.currentPlace) {
|
||||||
return true
|
return true
|
||||||
@ -130,7 +130,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
var pingTimer:NSTimer!
|
var pingTimer:NSTimer!
|
||||||
var reconnnects = true
|
var reconnnects = true
|
||||||
var reconnecting = false
|
var reconnecting = false
|
||||||
var reconnectAttempts = 10
|
var reconnectAttempts = -1
|
||||||
var reconnectWait = 10
|
var reconnectWait = 10
|
||||||
|
|
||||||
init(socketURL:String, opts:[String: AnyObject]? = nil) {
|
init(socketURL:String, opts:[String: AnyObject]? = nil) {
|
||||||
@ -153,7 +153,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let reconnectAttempts = opts!["reconnectAttempts"] as? Int {
|
if let reconnectAttempts = opts!["reconnectAttempts"] as? Int {
|
||||||
self.reconnectAttempts = abs(reconnectAttempts)
|
self.reconnectAttempts = reconnectAttempts
|
||||||
}
|
}
|
||||||
|
|
||||||
if let reconnectWait = opts!["reconnectWait"] as? Int {
|
if let reconnectWait = opts!["reconnectWait"] as? Int {
|
||||||
@ -410,10 +410,9 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
|
|
||||||
// Sends ping
|
// Sends ping
|
||||||
func sendPing() {
|
func sendPing() {
|
||||||
if (!self.connected) {
|
if (self.connected) {
|
||||||
return
|
self.io?.send("2")
|
||||||
}
|
}
|
||||||
self.io?.send("2")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Starts the ping timer
|
// Starts the ping timer
|
||||||
@ -423,8 +422,8 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We lost connection and should attempt to reestablish
|
// We lost connection and should attempt to reestablish
|
||||||
private func tryReconnect(#triesLeft:Int) {
|
private func tryReconnect(var #triesLeft:Int) {
|
||||||
if (triesLeft <= 0) {
|
if (triesLeft != -1 && triesLeft <= 0) {
|
||||||
self.connecting = false
|
self.connecting = false
|
||||||
self.reconnnects = false
|
self.reconnnects = false
|
||||||
self.reconnecting = false
|
self.reconnecting = false
|
||||||
@ -437,6 +436,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// println("Trying to reconnect #\(reconnectAttempts - triesLeft)")
|
// println("Trying to reconnect #\(reconnectAttempts - triesLeft)")
|
||||||
|
self.handleEvent(event: "reconnectAttempt", data: triesLeft)
|
||||||
|
|
||||||
let waitTime = UInt64(self.reconnectWait) * NSEC_PER_SEC
|
let waitTime = UInt64(self.reconnectWait) * NSEC_PER_SEC
|
||||||
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(waitTime))
|
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(waitTime))
|
||||||
@ -447,7 +447,11 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
self!.tryReconnect(triesLeft: triesLeft - 1)
|
if (triesLeft != -1) {
|
||||||
|
triesLeft = triesLeft - 1
|
||||||
|
}
|
||||||
|
|
||||||
|
self!.tryReconnect(triesLeft: triesLeft)
|
||||||
}
|
}
|
||||||
self.reconnecting = true
|
self.reconnecting = true
|
||||||
self.connect()
|
self.connect()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user