Add ability to send payload with connect
This commit is contained in:
parent
ce4de49d50
commit
86be3540f0
@ -1,7 +1,7 @@
|
|||||||
Pod::Spec.new do |s|
|
Pod::Spec.new do |s|
|
||||||
s.name = "Socket.IO-Client-Swift"
|
s.name = "Socket.IO-Client-Swift"
|
||||||
s.module_name = "SocketIO"
|
s.module_name = "SocketIO"
|
||||||
s.version = "16.0.0-beta1"
|
s.version = "16.0.0-beta2"
|
||||||
s.summary = "Socket.IO-client for iOS and OS X"
|
s.summary = "Socket.IO-client for iOS and OS X"
|
||||||
s.description = <<-DESC
|
s.description = <<-DESC
|
||||||
Socket.IO-client for iOS and OS X.
|
Socket.IO-client for iOS and OS X.
|
||||||
@ -18,7 +18,7 @@ Pod::Spec.new do |s|
|
|||||||
s.requires_arc = true
|
s.requires_arc = true
|
||||||
s.source = {
|
s.source = {
|
||||||
:git => "https://github.com/socketio/socket.io-client-swift.git",
|
:git => "https://github.com/socketio/socket.io-client-swift.git",
|
||||||
:tag => 'v16.0.0-beta1',
|
:tag => 'v16.0.0-beta2',
|
||||||
:submodules => true
|
:submodules => true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,7 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
|
|||||||
public private(set) var sid: String?
|
public private(set) var sid: String?
|
||||||
|
|
||||||
let ackHandlers = SocketAckManager()
|
let ackHandlers = SocketAckManager()
|
||||||
|
var connectPayload: [String: Any]?
|
||||||
|
|
||||||
private(set) var currentAck = -1
|
private(set) var currentAck = -1
|
||||||
|
|
||||||
@ -107,8 +108,8 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
|
|||||||
/// Connect to the server. The same as calling `connect(timeoutAfter:withHandler:)` with a timeout of 0.
|
/// Connect to the server. The same as calling `connect(timeoutAfter:withHandler:)` with a timeout of 0.
|
||||||
///
|
///
|
||||||
/// Only call after adding your event listeners, unless you know what you're doing.
|
/// Only call after adding your event listeners, unless you know what you're doing.
|
||||||
open func connect() {
|
open func connect(withPayload payload: [String: Any]? = nil) {
|
||||||
connect(timeoutAfter: 0, withHandler: nil)
|
connect(withPayload: payload, timeoutAfter: 0, withHandler: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Connect to the server. If we aren't connected after `timeoutAfter` seconds, then `withHandler` is called.
|
/// Connect to the server. If we aren't connected after `timeoutAfter` seconds, then `withHandler` is called.
|
||||||
@ -118,7 +119,7 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
|
|||||||
/// - parameter timeoutAfter: The number of seconds after which if we are not connected we assume the connection
|
/// - parameter timeoutAfter: The number of seconds after which if we are not connected we assume the connection
|
||||||
/// has failed. Pass 0 to never timeout.
|
/// has failed. Pass 0 to never timeout.
|
||||||
/// - parameter handler: The handler to call when the client fails to connect.
|
/// - parameter handler: The handler to call when the client fails to connect.
|
||||||
open func connect(timeoutAfter: Double, withHandler handler: (() -> ())?) {
|
open func connect(withPayload payload: [String: Any]? = nil, timeoutAfter: Double, withHandler handler: (() -> ())?) {
|
||||||
assert(timeoutAfter >= 0, "Invalid timeout: \(timeoutAfter)")
|
assert(timeoutAfter >= 0, "Invalid timeout: \(timeoutAfter)")
|
||||||
|
|
||||||
guard let manager = self.manager, status != .connected else {
|
guard let manager = self.manager, status != .connected else {
|
||||||
@ -128,7 +129,7 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
|
|||||||
|
|
||||||
status = .connecting
|
status = .connecting
|
||||||
|
|
||||||
joinNamespace()
|
joinNamespace(withPayload: payload)
|
||||||
|
|
||||||
guard timeoutAfter != 0 else { return }
|
guard timeoutAfter != 0 else { return }
|
||||||
|
|
||||||
@ -340,11 +341,15 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
|
|||||||
manager?.disconnectSocket(self)
|
manager?.disconnectSocket(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Joins `nsp`.
|
/// Joins `nsp`. You shouldn't need to call this directly, instead call `connect`.
|
||||||
open func joinNamespace() {
|
///
|
||||||
|
/// - Parameter payload: The optional
|
||||||
|
open func joinNamespace(withPayload payload: [String: Any]? = nil) {
|
||||||
DefaultSocketLogger.Logger.log("Joining namespace \(nsp)", type: logType)
|
DefaultSocketLogger.Logger.log("Joining namespace \(nsp)", type: logType)
|
||||||
|
|
||||||
manager?.connectSocket(self)
|
connectPayload = payload
|
||||||
|
|
||||||
|
manager?.connectSocket(self, withPayload: connectPayload)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Removes handler(s) for a client event.
|
/// Removes handler(s) for a client event.
|
||||||
|
|||||||
@ -65,16 +65,19 @@ public protocol SocketIOClientSpec : AnyObject {
|
|||||||
/// Connect to the server. The same as calling `connect(timeoutAfter:withHandler:)` with a timeout of 0.
|
/// Connect to the server. The same as calling `connect(timeoutAfter:withHandler:)` with a timeout of 0.
|
||||||
///
|
///
|
||||||
/// Only call after adding your event listeners, unless you know what you're doing.
|
/// Only call after adding your event listeners, unless you know what you're doing.
|
||||||
func connect()
|
///
|
||||||
|
/// - parameter payload: An optional payload sent on connect
|
||||||
|
func connect(withPayload payload: [String: Any]?)
|
||||||
|
|
||||||
/// Connect to the server. If we aren't connected after `timeoutAfter` seconds, then `withHandler` is called.
|
/// Connect to the server. If we aren't connected after `timeoutAfter` seconds, then `withHandler` is called.
|
||||||
///
|
///
|
||||||
/// Only call after adding your event listeners, unless you know what you're doing.
|
/// Only call after adding your event listeners, unless you know what you're doing.
|
||||||
///
|
///
|
||||||
|
/// - parameter payload: An optional payload sent on connect
|
||||||
/// - parameter timeoutAfter: The number of seconds after which if we are not connected we assume the connection
|
/// - parameter timeoutAfter: The number of seconds after which if we are not connected we assume the connection
|
||||||
/// has failed. Pass 0 to never timeout.
|
/// has failed. Pass 0 to never timeout.
|
||||||
/// - parameter handler: The handler to call when the client fails to connect.
|
/// - parameter handler: The handler to call when the client fails to connect.
|
||||||
func connect(timeoutAfter: Double, withHandler handler: (() -> ())?)
|
func connect(withPayload payload: [String: Any]?, timeoutAfter: Double, withHandler handler: (() -> ())?)
|
||||||
|
|
||||||
/// Called when the client connects to a namespace. If the client was created with a namespace upfront,
|
/// Called when the client connects to a namespace. If the client was created with a namespace upfront,
|
||||||
/// then this is only called when the client connects to that namespace.
|
/// then this is only called when the client connects to that namespace.
|
||||||
@ -162,7 +165,9 @@ public protocol SocketIOClientSpec : AnyObject {
|
|||||||
func leaveNamespace()
|
func leaveNamespace()
|
||||||
|
|
||||||
/// Joins `nsp`.
|
/// Joins `nsp`.
|
||||||
func joinNamespace()
|
///
|
||||||
|
/// - Parameter withPayload: The payload to connect when joining this namespace
|
||||||
|
func joinNamespace(withPayload payload: [String: Any]?)
|
||||||
|
|
||||||
/// Removes handler(s) for a client event.
|
/// Removes handler(s) for a client event.
|
||||||
///
|
///
|
||||||
|
|||||||
@ -202,7 +202,8 @@ open class SocketManager: NSObject, SocketManagerSpec, SocketParsable, SocketDat
|
|||||||
/// Connects a socket through this manager's engine.
|
/// Connects a socket through this manager's engine.
|
||||||
///
|
///
|
||||||
/// - parameter socket: The socket who we should connect through this manager.
|
/// - parameter socket: The socket who we should connect through this manager.
|
||||||
open func connectSocket(_ socket: SocketIOClient) {
|
/// - parameter withPayload: Optional payload to send on connect
|
||||||
|
open func connectSocket(_ socket: SocketIOClient, withPayload payload: [String: Any]? = nil) {
|
||||||
guard status == .connected else {
|
guard status == .connected else {
|
||||||
DefaultSocketLogger.Logger.log("Tried connecting socket when engine isn't open. Connecting",
|
DefaultSocketLogger.Logger.log("Tried connecting socket when engine isn't open. Connecting",
|
||||||
type: SocketManager.logType)
|
type: SocketManager.logType)
|
||||||
@ -211,7 +212,15 @@ open class SocketManager: NSObject, SocketManagerSpec, SocketParsable, SocketDat
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
engine?.send("0\(socket.nsp),", withData: [])
|
var payloadStr = ""
|
||||||
|
|
||||||
|
if payload != nil,
|
||||||
|
let payloadData = try? JSONSerialization.data(withJSONObject: payload!, options: .fragmentsAllowed),
|
||||||
|
let jsonString = String(data: payloadData, encoding: .utf8) {
|
||||||
|
payloadStr = jsonString
|
||||||
|
}
|
||||||
|
|
||||||
|
engine?.send("0\(socket.nsp),\(payloadStr)", withData: [])
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Called when the manager has disconnected from socket.io.
|
/// Called when the manager has disconnected from socket.io.
|
||||||
@ -341,7 +350,7 @@ open class SocketManager: NSObject, SocketManagerSpec, SocketParsable, SocketDat
|
|||||||
status = .connected
|
status = .connected
|
||||||
|
|
||||||
for (_, socket) in nsps where socket.status == .connecting {
|
for (_, socket) in nsps where socket.status == .connecting {
|
||||||
connectSocket(socket)
|
connectSocket(socket, withPayload: socket.connectPayload)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,8 @@ public protocol SocketManagerSpec : AnyObject, SocketEngineClient {
|
|||||||
/// Connects a socket through this manager's engine.
|
/// Connects a socket through this manager's engine.
|
||||||
///
|
///
|
||||||
/// - parameter socket: The socket who we should connect through this manager.
|
/// - parameter socket: The socket who we should connect through this manager.
|
||||||
func connectSocket(_ socket: SocketIOClient)
|
/// - parameter withPayload: Optional payload to send on connect
|
||||||
|
func connectSocket(_ socket: SocketIOClient, withPayload: [String: Any]?)
|
||||||
|
|
||||||
/// Called when the manager has disconnected from socket.io.
|
/// Called when the manager has disconnected from socket.io.
|
||||||
///
|
///
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user