tweaks to once
This commit is contained in:
parent
70c7dacde9
commit
9a05f6043b
@ -143,6 +143,8 @@ Methods
|
||||
11. `reconnect()` - Causes the client to reconnect to the server.
|
||||
12. `joinNamespace()` - Causes the client to join nsp. Shouldn't need to be called unless you change nsp manually.
|
||||
13. `leaveNamespace()` - Causes the client to leave the nsp and go back to /
|
||||
14. `once(event: String, callback: NormalCallback)` - Adds a handler that will only be executed once.
|
||||
15. `once(event event: String, callback: NormalCallbackObjectiveC)` - Adds a handler that will only be executed once.
|
||||
|
||||
Client Events
|
||||
------
|
||||
|
||||
@ -35,19 +35,21 @@ private func emitAckCallbackObjectiveC(socket: SocketIOClient?, num: Int?)
|
||||
}
|
||||
|
||||
struct SocketEventHandler {
|
||||
let id = NSUUID()
|
||||
let event: String
|
||||
let id: NSUUID
|
||||
let callback: NormalCallback?
|
||||
let callBackObjectiveC: NormalCallbackObjectiveC?
|
||||
|
||||
init(event: String, callback: NormalCallback) {
|
||||
init(event: String, id: NSUUID = NSUUID(), callback: NormalCallback) {
|
||||
self.event = event
|
||||
self.id = id
|
||||
self.callback = callback
|
||||
self.callBackObjectiveC = nil
|
||||
}
|
||||
|
||||
init(event: String, callback: NormalCallbackObjectiveC) {
|
||||
init(event: String, id: NSUUID = NSUUID(), callback: NormalCallbackObjectiveC) {
|
||||
self.event = event
|
||||
self.id = id
|
||||
self.callback = nil
|
||||
self.callBackObjectiveC = callback
|
||||
}
|
||||
|
||||
@ -430,14 +430,15 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
||||
public func once(event: String, callback: NormalCallback) {
|
||||
Logger.log("Adding once handler for event: %@", type: logType, args: event)
|
||||
|
||||
var handler: SocketEventHandler?;
|
||||
let id = NSUUID()
|
||||
|
||||
handler = SocketEventHandler(event: event) { (data, ack: AckEmitter?) in
|
||||
self.handlers = ContiguousArray(self.handlers.filter { $0.id != handler!.id })
|
||||
let handler = SocketEventHandler(event: event, id: id) {[weak self] (data, ack: AckEmitter?) in
|
||||
guard let this = self else {return}
|
||||
this.handlers = ContiguousArray(this.handlers.filter {$0.id != id})
|
||||
callback(data, ack)
|
||||
}
|
||||
|
||||
handlers.append(handler!)
|
||||
handlers.append(handler)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -446,14 +447,15 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
||||
public func once(event event: String, callback: NormalCallbackObjectiveC) {
|
||||
Logger.log("Adding once handler for event: %@", type: logType, args: event)
|
||||
|
||||
var handler: SocketEventHandler?;
|
||||
let id = NSUUID()
|
||||
|
||||
handler = SocketEventHandler(event: event) { (data, ack: AckEmitterObjectiveC?) in
|
||||
self.handlers = ContiguousArray(self.handlers.filter { $0.id != handler!.id })
|
||||
let handler = SocketEventHandler(event: event, id: id) {[weak self] (data, ack: AckEmitterObjectiveC?) in
|
||||
guard let this = self else {return}
|
||||
this.handlers = ContiguousArray(this.handlers.filter {$0.id != id})
|
||||
callback(data, ack)
|
||||
}
|
||||
|
||||
handlers.append(handler!)
|
||||
handlers.append(handler)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user