Skip to content

Commit ef02247

Browse files
committed
Use callbacks instead of delegate methods for Starscream
1 parent d811b19 commit ef02247

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

Source/SocketIO/Engine/SocketEngine.swift

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -280,18 +280,40 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
280280
}
281281

282282
private func createWebSocketAndConnect() {
283-
ws?.delegate = nil // TODO this seems a bit defensive, is this really needed?
284283
var req = URLRequest(url: urlWebSocketWithSid)
285284

286285
addHeaders(to: &req)
287286

288287
ws = WebSocket(request: req)
289288
ws?.callbackQueue = engineQueue
290289
ws?.enableCompression = compress
291-
ws?.delegate = self
292290
ws?.disableSSLCertValidation = selfSigned
293291
ws?.security = security?.security
294292

293+
ws?.onConnect = {[weak self] in
294+
guard let this = self else { return }
295+
296+
this.websocketDidConnect()
297+
}
298+
299+
ws?.onDisconnect = {[weak self] error in
300+
guard let this = self else { return }
301+
302+
this.websocketDidDisconnect(error: error)
303+
}
304+
305+
ws?.onData = {[weak self] data in
306+
guard let this = self else { return }
307+
308+
this.parseEngineData(data)
309+
}
310+
311+
ws?.onText = {[weak self] message in
312+
guard let this = self else { return }
313+
314+
this.parseEngineMessage(message)
315+
}
316+
295317
ws?.connect()
296318
}
297319

@@ -607,10 +629,9 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
607629
}
608630
}
609631

610-
// MARK: Starscream delegate conformance
632+
// MARK: WebSocket Methods
611633

612-
/// Delegate method for connection.
613-
public func websocketDidConnect(socket: WebSocketClient) {
634+
private func websocketDidConnect() {
614635
if !forceWebsockets {
615636
probing = true
616637
probeWebSocket()
@@ -621,8 +642,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll
621642
}
622643
}
623644

624-
/// Delegate method for disconnection.
625-
public func websocketDidDisconnect(socket: WebSocketClient, error: Error?) {
645+
private func websocketDidDisconnect(error: Error?) {
626646
probing = false
627647

628648
if closed {

Source/SocketIO/Engine/SocketEngineWebsocket.swift

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import Foundation
2727
import Starscream
2828

2929
/// Protocol that is used to implement socket.io WebSocket support
30-
public protocol SocketEngineWebsocket : SocketEngineSpec, WebSocketDelegate {
30+
public protocol SocketEngineWebsocket : SocketEngineSpec {
3131
// MARK: Methods
3232

3333
/// Sends an engine.io message through the WebSocket transport.
@@ -66,16 +66,4 @@ extension SocketEngineWebsocket {
6666
}
6767
}
6868
}
69-
70-
// MARK: Starscream delegate methods
71-
72-
/// Delegate method for when a message is received.
73-
public func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
74-
parseEngineMessage(text)
75-
}
76-
77-
/// Delegate method for when binary is received.
78-
public func websocketDidReceiveData(socket: WebSocketClient, data: Data) {
79-
parseEngineData(data)
80-
}
8169
}

0 commit comments

Comments
 (0)