Merge branch 'master' into 1.2

This commit is contained in:
Erik 2015-03-17 12:12:37 -04:00
commit 028afcaa2c
3 changed files with 21 additions and 12 deletions

View File

@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "Socket.IO-Client-Swift"
s.version = "1.2.0"
s.version = "1.2.1"
s.summary = "Socket.IO-client for Swift"
s.description = <<-DESC
Socket.IO-client for Swift.
@ -12,7 +12,7 @@ Pod::Spec.new do |s|
s.author = { "Erik" => "nuclear.ace@gmail.com" }
s.ios.deployment_target = '8.0'
s.osx.deployment_target = '10.10'
s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v1.2.0' }
s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v1.2.1' }
s.source_files = "SwiftIO/**/*.swift"
s.requires_arc = true
# s.dependency 'Starscream', '~> 0.9' # currently this repo includes Starscream swift files

View File

@ -31,10 +31,13 @@ public typealias AckCallback = (NSArray?) -> Void
let event:String!
var acked = false
var callback:AckCallback?
weak var socket:SocketIOClient?
init(event:String, ackNum:Int = 0) {
init(event:String, ackNum:Int = 0, socket:SocketIOClient) {
self.ackNum = ackNum
self.event = event
self.socket = socket
}
public func onAck(timeout:UInt64, withCallback callback:AckCallback) {
@ -50,6 +53,7 @@ public typealias AckCallback = (NSArray?) -> Void
if !self!.acked {
self?.executeAck(["No ACK"])
self?.socket?.removeAck(self!)
}
}
}

View File

@ -198,15 +198,16 @@ public class SocketIOClient: NSObject {
public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler {
if !self.connected {
return SocketAckHandler(event: "fail")
return SocketAckHandler(event: "fail", socket: self)
}
self.currentAck++
let ackHandler = SocketAckHandler(event: event, ackNum: self.currentAck)
let ackHandler = SocketAckHandler(event: event,
ackNum: self.currentAck, socket: self)
self.ackHandlers.append(ackHandler)
dispatch_async(self.emitQueue) {[weak self] in
self?._emit(event, args, ack: true)
dispatch_async(self.emitQueue) {[weak self, ack = self.currentAck] in
self?._emit(event, args, ack: ack)
return
}
@ -217,7 +218,7 @@ public class SocketIOClient: NSObject {
return self.emitWithAck(event, args)
}
private func _emit(event:String, _ args:[AnyObject], ack:Bool = false) {
private func _emit(event:String, _ args:[AnyObject], ack:Int? = nil) {
var frame:SocketEvent
var str:String
@ -228,22 +229,22 @@ public class SocketIOClient: NSObject {
}
if hasBinary {
if !ack {
if ack == nil {
str = SocketEvent.createMessageForEvent(event, withArgs: items,
hasBinary: true, withDatas: emitDatas.count, toNamespace: self.nsp)
} else {
str = SocketEvent.createMessageForEvent(event, withArgs: items,
hasBinary: true, withDatas: emitDatas.count, toNamespace: self.nsp, wantsAck: self.currentAck)
hasBinary: true, withDatas: emitDatas.count, toNamespace: self.nsp, wantsAck: ack)
}
self.engine?.send(str, datas: emitDatas)
} else {
if !ack {
if ack == nil {
str = SocketEvent.createMessageForEvent(event, withArgs: items, hasBinary: false,
withDatas: 0, toNamespace: self.nsp)
} else {
str = SocketEvent.createMessageForEvent(event, withArgs: items, hasBinary: false,
withDatas: 0, toNamespace: self.nsp, wantsAck: self.currentAck)
withDatas: 0, toNamespace: self.nsp, wantsAck: ack)
}
self.engine?.send(str)
@ -385,6 +386,10 @@ public class SocketIOClient: NSObject {
}
}
func removeAck(ack:SocketAckHandler) {
self.ackHandlers = self.ackHandlers.filter {$0 === ack ? false : true}
}
// We lost connection and should attempt to reestablish
func tryReconnect() {
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {