Skip to content

Commit 0b985c6

Browse files
authored
Remove Starscream Dependency and bump minimum support platform (#11)
* Remove Starscream * Bump swift-tools-version to 5.5
1 parent 3e4d8a4 commit 0b985c6

File tree

4 files changed

+10
-129
lines changed

4 files changed

+10
-129
lines changed

Package.resolved

Lines changed: 0 additions & 25 deletions
This file was deleted.

Package.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
1-
// swift-tools-version:5.3
1+
// swift-tools-version:5.5
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import PackageDescription
55

66
let package = Package(
77
name: "Realtime",
8+
platforms: [
9+
.iOS(.v13),
10+
.macCatalyst(.v13),
11+
.macOS(.v10_15),
12+
.watchOS(.v6),
13+
.tvOS(.v13),
14+
],
815
products: [
916
.library(
1017
name: "Realtime",
1118
targets: ["Realtime"]
1219
)
1320
],
14-
dependencies: [
15-
.package(url: "https://github.com/daltoniam/Starscream.git", from: "3.0.0")
16-
],
1721
targets: [
1822
.target(
1923
name: "Realtime",
20-
dependencies: ["Starscream"]
24+
dependencies: []
2125
),
2226
.testTarget(
2327
name: "RealtimeTests",

Sources/Realtime/RealtimeClient.swift

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,7 @@ public class RealtimeClient: TransportDelegate {
163163
endPointUrl = RealtimeClient.buildEndpointUrl(
164164
endpoint: endPoint,
165165
params: params)
166-
if #available(macOS 10.15, iOS 13, watchOS 6, tvOS 13, *) {
167-
transport = URLSessionTransport(url: endPointUrl)
168-
} else {
169-
transport = StarscreamTransport(url: endPointUrl)
170-
}
166+
transport = URLSessionTransport(url: endPointUrl)
171167
self.params = params
172168
self.endPoint = endPoint
173169

Sources/Realtime/Transport.swift

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
// THE SOFTWARE.
2020

2121
import Foundation
22-
import Starscream
2322

2423
#if canImport(FoundationNetworking)
2524
import FoundationNetworking
@@ -279,96 +278,3 @@ public class URLSessionTransport: NSObject, Transport, URLSessionWebSocketDelega
279278
delegate?.onClose(code: RealtimeClient.CloseCode.abnormal.rawValue)
280279
}
281280
}
282-
283-
public class StarscreamTransport: NSObject, Transport, WebSocketDelegate {
284-
/// The URL to connect to
285-
private let url: URL
286-
287-
/// The underlying Starscream WebSocket that data is transfered over.
288-
private var socket: WebSocket?
289-
290-
/**
291-
Initializes a `Transport` layer built using Starscream's WebSocket, which is available for
292-
previous iOS targets back to iOS 10.
293-
294-
If you are targeting iOS 13 or later, then you do not need to use this transport layer unless
295-
you specifically prefer using Starscream as the underlying Socket connection.
296-
297-
Example:
298-
299-
```swift
300-
let url = URL("wss://example.com/socket")
301-
let transport: Transport = StarscreamTransport(url: url)
302-
```
303-
304-
- parameter url: URL to connect to
305-
*/
306-
public init(url: URL) {
307-
self.url = url
308-
super.init()
309-
}
310-
311-
// MARK: - Transport
312-
313-
public var readyState: TransportReadyState = .closed
314-
public var delegate: TransportDelegate?
315-
316-
public func connect() {
317-
// Set the trasport state as connecting
318-
readyState = .connecting
319-
320-
let socket = WebSocket(url: url)
321-
socket.delegate = self
322-
socket.connect()
323-
324-
self.socket = socket
325-
}
326-
327-
public func disconnect(code: Int, reason _: String?) {
328-
/*
329-
TODO:
330-
1. Provide a "strict" mode that fails if an invalid close code is given
331-
2. If strict mode is disabled, default to CloseCode.invalid
332-
3. Provide default .normalClosure function
333-
*/
334-
guard
335-
let closeCode = CloseCode(rawValue: UInt16(code))
336-
else {
337-
fatalError("Could not create a CloseCode with invalid code: [\(code)].")
338-
}
339-
340-
readyState = .closing
341-
socket?.disconnect(closeCode: closeCode.rawValue)
342-
}
343-
344-
public func send(data: Data) {
345-
socket?.write(data: data)
346-
}
347-
348-
// MARK: - WebSocketDelegate
349-
350-
public func websocketDidConnect(socket _: WebSocketClient) {
351-
readyState = .open
352-
delegate?.onOpen()
353-
}
354-
355-
public func websocketDidDisconnect(socket _: WebSocketClient, error: Error?) {
356-
let closeCode = (error as? WSError)?.code ?? RealtimeClient.CloseCode.abnormal.rawValue
357-
// Set the state of the Transport to closed
358-
readyState = .closed
359-
360-
// Inform the Transport's delegate that an error occurred.
361-
if let safeError = error { delegate?.onError(error: safeError) }
362-
363-
// An abnormal error is results in an abnormal closure, such as internet getting dropped
364-
// so inform the delegate that the Transport has closed abnormally. This will kick off
365-
// the reconnect logic.
366-
delegate?.onClose(code: closeCode)
367-
}
368-
369-
public func websocketDidReceiveMessage(socket _: WebSocketClient, text: String) {
370-
delegate?.onMessage(message: text)
371-
}
372-
373-
public func websocketDidReceiveData(socket _: WebSocketClient, data _: Data) { /* no-op */ }
374-
}

0 commit comments

Comments
 (0)