Skip to content

Commit f34750a

Browse files
committed
Merge branch 'development'
* development: Add once for client events Update starscream repo Bump starscream dep Add off for client events. Fixes socketio#773
2 parents 0e5ffce + 5621f0d commit f34750a

File tree

4 files changed

+46
-3
lines changed

4 files changed

+46
-3
lines changed

Socket.IO-Client-Swift.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ Pod::Spec.new do |s|
2424
'SWIFT_VERSION' => '3.1'
2525
}
2626
s.source_files = "Source/*.swift"
27-
s.dependency "StarscreamSocketIO", "~> 8.0.2"
27+
s.dependency "StarscreamSocketIO", "~> 8.0.3"
2828
end

SocketIO-MacTests/SocketSideEffectTest.swift

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,39 @@ 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 }
88-
XCTAssertEqual(socket.testHandlers.count, 1)
89104
socket.on("test") {data, ack in }
90105
XCTAssertEqual(socket.testHandlers.count, 2)
91106
socket.off("test")
92107
XCTAssertEqual(socket.testHandlers.count, 0)
93108
}
94109

110+
func testOffClientEvent() {
111+
socket.on(clientEvent: .connect) {data, ack in }
112+
socket.on(clientEvent: .disconnect) {data, ack in }
113+
XCTAssertEqual(socket.testHandlers.count, 2)
114+
socket.off(clientEvent: .disconnect)
115+
XCTAssertEqual(socket.testHandlers.count, 1)
116+
XCTAssertTrue(socket.testHandlers.contains(where: { $0.event == "connect" }))
117+
}
118+
95119
func testOffWithId() {
96120
let handler = socket.on("test") {data, ack in }
97121
XCTAssertEqual(socket.testHandlers.count, 1)

Source/SocketIOClient.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,15 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
439439
}
440440
}
441441

442+
/// Removes handler(s) for a client event.
443+
///
444+
/// If you wish to remove a client event handler, call the `off(id:)` with the UUID received from its `on` call.
445+
///
446+
/// - parameter clientEvent: The event to remove handlers for.
447+
open func off(clientEvent event: SocketClientEvent) {
448+
off(event.rawValue)
449+
}
450+
442451
/// Removes handler(s) based on an event name.
443452
///
444453
/// If you wish to remove a specific event, call the `off(id:)` with the UUID received from its `on` call.
@@ -499,6 +508,16 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
499508
return handler.id
500509
}
501510

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+
502521
/// Adds a single-use handler for an event.
503522
///
504523
/// - parameter event: The event name for this handler.

0 commit comments

Comments
 (0)