Use callbacks instead of delegate methods for Starscream

This commit is contained in:
Erik Little 2018-03-02 11:28:35 -05:00
parent d811b194eb
commit ef02247a0c
No known key found for this signature in database
GPG Key ID: 62F837E56F4E9320
2 changed files with 28 additions and 20 deletions

View File

@ -280,7 +280,6 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
}
private func createWebSocketAndConnect() {
ws?.delegate = nil // TODO this seems a bit defensive, is this really needed?
var req = URLRequest(url: urlWebSocketWithSid)
addHeaders(to: &req)
@ -288,10 +287,33 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
ws = WebSocket(request: req)
ws?.callbackQueue = engineQueue
ws?.enableCompression = compress
ws?.delegate = self
ws?.disableSSLCertValidation = selfSigned
ws?.security = security?.security
ws?.onConnect = {[weak self] in
guard let this = self else { return }
this.websocketDidConnect()
}
ws?.onDisconnect = {[weak self] error in
guard let this = self else { return }
this.websocketDidDisconnect(error: error)
}
ws?.onData = {[weak self] data in
guard let this = self else { return }
this.parseEngineData(data)
}
ws?.onText = {[weak self] message in
guard let this = self else { return }
this.parseEngineMessage(message)
}
ws?.connect()
}
@ -607,10 +629,9 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
}
}
// MARK: Starscream delegate conformance
// MARK: WebSocket Methods
/// Delegate method for connection.
public func websocketDidConnect(socket: WebSocketClient) {
private func websocketDidConnect() {
if !forceWebsockets {
probing = true
probeWebSocket()
@ -621,8 +642,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
}
}
/// Delegate method for disconnection.
public func websocketDidDisconnect(socket: WebSocketClient, error: Error?) {
private func websocketDidDisconnect(error: Error?) {
probing = false
if closed {

View File

@ -27,7 +27,7 @@ import Foundation
import Starscream
/// Protocol that is used to implement socket.io WebSocket support
public protocol SocketEngineWebsocket : SocketEngineSpec, WebSocketDelegate {
public protocol SocketEngineWebsocket : SocketEngineSpec {
// MARK: Methods
/// Sends an engine.io message through the WebSocket transport.
@ -66,16 +66,4 @@ extension SocketEngineWebsocket {
}
}
}
// MARK: Starscream delegate methods
/// Delegate method for when a message is received.
public func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
parseEngineMessage(text)
}
/// Delegate method for when binary is received.
public func websocketDidReceiveData(socket: WebSocketClient, data: Data) {
parseEngineData(data)
}
}