Merge branch 'master' into 1.2
This commit is contained in:
commit
028afcaa2c
@ -1,6 +1,6 @@
|
|||||||
Pod::Spec.new do |s|
|
Pod::Spec.new do |s|
|
||||||
s.name = "Socket.IO-Client-Swift"
|
s.name = "Socket.IO-Client-Swift"
|
||||||
s.version = "1.2.0"
|
s.version = "1.2.1"
|
||||||
s.summary = "Socket.IO-client for Swift"
|
s.summary = "Socket.IO-client for Swift"
|
||||||
s.description = <<-DESC
|
s.description = <<-DESC
|
||||||
Socket.IO-client for Swift.
|
Socket.IO-client for Swift.
|
||||||
@ -12,7 +12,7 @@ Pod::Spec.new do |s|
|
|||||||
s.author = { "Erik" => "nuclear.ace@gmail.com" }
|
s.author = { "Erik" => "nuclear.ace@gmail.com" }
|
||||||
s.ios.deployment_target = '8.0'
|
s.ios.deployment_target = '8.0'
|
||||||
s.osx.deployment_target = '10.10'
|
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.source_files = "SwiftIO/**/*.swift"
|
||||||
s.requires_arc = true
|
s.requires_arc = true
|
||||||
# s.dependency 'Starscream', '~> 0.9' # currently this repo includes Starscream swift files
|
# s.dependency 'Starscream', '~> 0.9' # currently this repo includes Starscream swift files
|
||||||
|
|||||||
@ -31,10 +31,13 @@ public typealias AckCallback = (NSArray?) -> Void
|
|||||||
let event:String!
|
let event:String!
|
||||||
var acked = false
|
var acked = false
|
||||||
var callback:AckCallback?
|
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.ackNum = ackNum
|
||||||
self.event = event
|
self.event = event
|
||||||
|
self.socket = socket
|
||||||
}
|
}
|
||||||
|
|
||||||
public func onAck(timeout:UInt64, withCallback callback:AckCallback) {
|
public func onAck(timeout:UInt64, withCallback callback:AckCallback) {
|
||||||
@ -50,6 +53,7 @@ public typealias AckCallback = (NSArray?) -> Void
|
|||||||
|
|
||||||
if !self!.acked {
|
if !self!.acked {
|
||||||
self?.executeAck(["No ACK"])
|
self?.executeAck(["No ACK"])
|
||||||
|
self?.socket?.removeAck(self!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -198,15 +198,16 @@ public class SocketIOClient: NSObject {
|
|||||||
|
|
||||||
public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler {
|
public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler {
|
||||||
if !self.connected {
|
if !self.connected {
|
||||||
return SocketAckHandler(event: "fail")
|
return SocketAckHandler(event: "fail", socket: self)
|
||||||
}
|
}
|
||||||
|
|
||||||
self.currentAck++
|
self.currentAck++
|
||||||
let ackHandler = SocketAckHandler(event: event, ackNum: self.currentAck)
|
let ackHandler = SocketAckHandler(event: event,
|
||||||
|
ackNum: self.currentAck, socket: self)
|
||||||
self.ackHandlers.append(ackHandler)
|
self.ackHandlers.append(ackHandler)
|
||||||
|
|
||||||
dispatch_async(self.emitQueue) {[weak self] in
|
dispatch_async(self.emitQueue) {[weak self, ack = self.currentAck] in
|
||||||
self?._emit(event, args, ack: true)
|
self?._emit(event, args, ack: ack)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +218,7 @@ public class SocketIOClient: NSObject {
|
|||||||
return self.emitWithAck(event, args)
|
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 frame:SocketEvent
|
||||||
var str:String
|
var str:String
|
||||||
|
|
||||||
@ -228,22 +229,22 @@ public class SocketIOClient: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if hasBinary {
|
if hasBinary {
|
||||||
if !ack {
|
if ack == nil {
|
||||||
str = SocketEvent.createMessageForEvent(event, withArgs: items,
|
str = SocketEvent.createMessageForEvent(event, withArgs: items,
|
||||||
hasBinary: true, withDatas: emitDatas.count, toNamespace: self.nsp)
|
hasBinary: true, withDatas: emitDatas.count, toNamespace: self.nsp)
|
||||||
} else {
|
} else {
|
||||||
str = SocketEvent.createMessageForEvent(event, withArgs: items,
|
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)
|
self.engine?.send(str, datas: emitDatas)
|
||||||
} else {
|
} else {
|
||||||
if !ack {
|
if ack == nil {
|
||||||
str = SocketEvent.createMessageForEvent(event, withArgs: items, hasBinary: false,
|
str = SocketEvent.createMessageForEvent(event, withArgs: items, hasBinary: false,
|
||||||
withDatas: 0, toNamespace: self.nsp)
|
withDatas: 0, toNamespace: self.nsp)
|
||||||
} else {
|
} else {
|
||||||
str = SocketEvent.createMessageForEvent(event, withArgs: items, hasBinary: false,
|
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)
|
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
|
// We lost connection and should attempt to reestablish
|
||||||
func tryReconnect() {
|
func tryReconnect() {
|
||||||
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {
|
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user