Add rawEmitView. Implements #992

This commit is contained in:
Erik Little 2018-03-30 14:33:18 -04:00
parent 4564aebec1
commit d21a65e117
No known key found for this signature in database
GPG Key ID: 62F837E56F4E9320
4 changed files with 32 additions and 6 deletions

View File

@ -7,16 +7,15 @@ import Foundation
/// Class that gives a backwards compatible way to cause an emit not to recursively check for Data objects. /// Class that gives a backwards compatible way to cause an emit not to recursively check for Data objects.
/// ///
/// Usage: /// Usage:
///
/// ```swift /// ```swift
/// socket.binary(false).emit("myEvent", myObject) /// socket.rawEmitView.emit("myEvent", myObject)
/// ``` /// ```
public final class SocketBinaryView : NSObject { public final class SocketBinaryView : NSObject {
private unowned let socket: SocketIOClient private unowned let socket: SocketIOClient
private let binary: Bool
init(socket: SocketIOClient, binary: Bool) { init(socket: SocketIOClient) {
self.socket = socket self.socket = socket
self.binary = binary
} }
/// Send an event to the server, with optional data items. /// Send an event to the server, with optional data items.
@ -48,7 +47,7 @@ public final class SocketBinaryView : NSObject {
return return
} }
socket.emit([event] + items, binary: binary) socket.emit([event] + items, binary: false)
} }
/// Sends a message to the server, requesting an ack. /// Sends a message to the server, requesting an ack.
@ -101,6 +100,6 @@ public final class SocketBinaryView : NSObject {
/// - returns: An `OnAckCallback`. You must call the `timingOut(after:)` method before the event will be sent. /// - returns: An `OnAckCallback`. You must call the `timingOut(after:)` method before the event will be sent.
@objc @objc
open func emitWithAck(_ event: String, with items: [Any]) -> OnAckCallback { open func emitWithAck(_ event: String, with items: [Any]) -> OnAckCallback {
return socket.createOnAck([event] + items, binary: binary) return socket.createOnAck([event] + items, binary: false)
} }
} }

View File

@ -67,6 +67,18 @@ open class SocketIOClient : NSObject, SocketIOClientSpec {
@objc @objc
public private(set) weak var manager: SocketManagerSpec? public private(set) weak var manager: SocketManagerSpec?
/// A view into this socket where emits do not check for binary data.
///
/// Usage:
///
/// ```swift
/// socket.rawEmitView.emit("myEvent", myObject)
/// ```
///
/// **NOTE**: It is not safe to hold on to this view beyond the life of the socket.
@objc
public private(set) lazy var rawEmitView = SocketBinaryView(socket: self)
/// The status of this client. /// The status of this client.
@objc @objc
public private(set) var status = SocketIOStatus.notConnected { public private(set) var status = SocketIOStatus.notConnected {

View File

@ -43,6 +43,17 @@ public protocol SocketIOClientSpec : class {
/// **Must** start with a `/`. /// **Must** start with a `/`.
var nsp: String { get } var nsp: String { get }
/// A view into this socket where emits do not check for binary data.
///
/// Usage:
///
/// ```swift
/// socket.rawEmitView.emit("myEvent", myObject)
/// ```
///
/// **NOTE**: It is not safe to hold on to this view beyond the life of the socket.
var rawEmitView: SocketBinaryView { get }
/// The status of this client. /// The status of this client.
var status: SocketIOStatus { get } var status: SocketIOStatus { get }

View File

@ -66,6 +66,10 @@
[self.socket emit:@"testEmit" with:@[@YES]]; [self.socket emit:@"testEmit" with:@[@YES]];
} }
- (void)testRawEmitSyntax {
[[self.socket rawEmitView] emit:@"myEvent" with:@[@1]];
}
- (void)testEmitWithAckSyntax { - (void)testEmitWithAckSyntax {
[[self.socket emitWithAck:@"testAckEmit" with:@[@YES]] timingOutAfter:0 callback:^(NSArray* data) { }]; [[self.socket emitWithAck:@"testAckEmit" with:@[@YES]] timingOutAfter:0 callback:^(NSArray* data) { }];
} }