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.
|
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.
|
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 /
|
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
|
Client Events
|
||||||
------
|
------
|
||||||
|
|||||||
@ -35,19 +35,21 @@ private func emitAckCallbackObjectiveC(socket: SocketIOClient?, num: Int?)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct SocketEventHandler {
|
struct SocketEventHandler {
|
||||||
let id = NSUUID()
|
|
||||||
let event: String
|
let event: String
|
||||||
|
let id: NSUUID
|
||||||
let callback: NormalCallback?
|
let callback: NormalCallback?
|
||||||
let callBackObjectiveC: NormalCallbackObjectiveC?
|
let callBackObjectiveC: NormalCallbackObjectiveC?
|
||||||
|
|
||||||
init(event: String, callback: NormalCallback) {
|
init(event: String, id: NSUUID = NSUUID(), callback: NormalCallback) {
|
||||||
self.event = event
|
self.event = event
|
||||||
|
self.id = id
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
self.callBackObjectiveC = nil
|
self.callBackObjectiveC = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
init(event: String, callback: NormalCallbackObjectiveC) {
|
init(event: String, id: NSUUID = NSUUID(), callback: NormalCallbackObjectiveC) {
|
||||||
self.event = event
|
self.event = event
|
||||||
|
self.id = id
|
||||||
self.callback = nil
|
self.callback = nil
|
||||||
self.callBackObjectiveC = callback
|
self.callBackObjectiveC = callback
|
||||||
}
|
}
|
||||||
|
|||||||
@ -430,14 +430,15 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
|
|||||||
public func once(event: String, callback: NormalCallback) {
|
public func once(event: String, callback: NormalCallback) {
|
||||||
Logger.log("Adding once handler for event: %@", type: logType, args: event)
|
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
|
let handler = SocketEventHandler(event: event, id: id) {[weak self] (data, ack: AckEmitter?) in
|
||||||
self.handlers = ContiguousArray(self.handlers.filter { $0.id != handler!.id })
|
guard let this = self else {return}
|
||||||
|
this.handlers = ContiguousArray(this.handlers.filter {$0.id != id})
|
||||||
callback(data, ack)
|
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) {
|
public func once(event event: String, callback: NormalCallbackObjectiveC) {
|
||||||
Logger.log("Adding once handler for event: %@", type: logType, args: event)
|
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
|
let handler = SocketEventHandler(event: event, id: id) {[weak self] (data, ack: AckEmitterObjectiveC?) in
|
||||||
self.handlers = ContiguousArray(self.handlers.filter { $0.id != handler!.id })
|
guard let this = self else {return}
|
||||||
|
this.handlers = ContiguousArray(this.handlers.filter {$0.id != id})
|
||||||
callback(data, ack)
|
callback(data, ack)
|
||||||
}
|
}
|
||||||
|
|
||||||
handlers.append(handler!)
|
handlers.append(handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user