Skip to content

Commit 5621f0d

Browse files
committed
Add once for client events
1 parent 18efea4 commit 5621f0d

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

SocketIO-MacTests/SocketSideEffectTest.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,22 @@ class SocketSideEffectTest: XCTestCase {
8383
waitForExpectations(timeout: 3, handler: nil)
8484
}
8585

86+
func testHandleOnceClientEvent() {
87+
let expect = expectation(description: "handled event")
88+
89+
socket.once(clientEvent: .connect) {data, ack in
90+
XCTAssertEqual(self.socket.testHandlers.count, 0)
91+
expect.fulfill()
92+
}
93+
94+
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1) {
95+
// Fake connecting
96+
self.socket.parseEngineMessage("0/")
97+
}
98+
99+
waitForExpectations(timeout: 3, handler: nil)
100+
}
101+
86102
func testOffWithEvent() {
87103
socket.on("test") {data, ack in }
88104
socket.on("test") {data, ack in }

Source/SocketIOClient.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,16 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
508508
return handler.id
509509
}
510510

511+
/// Adds a single-use handler for a client event.
512+
///
513+
/// - parameter clientEvent: The event for this handler.
514+
/// - parameter callback: The callback that will execute when this event is received.
515+
/// - returns: A unique id for the handler that can be used to remove it.
516+
@discardableResult
517+
open func once(clientEvent event: SocketClientEvent, callback: @escaping NormalCallback) -> UUID {
518+
return once(event.rawValue, callback: callback)
519+
}
520+
511521
/// Adds a single-use handler for an event.
512522
///
513523
/// - parameter event: The event name for this handler.

0 commit comments

Comments
 (0)