Skip to content
This repository was archived by the owner on Jun 13, 2023. It is now read-only.

Commit c70cf0f

Browse files
committed
Deprecates SRWebSocket, use StarScream
1 parent 821d4a2 commit c70cf0f

File tree

9 files changed

+116
-109
lines changed

9 files changed

+116
-109
lines changed

.gitmodules

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
[submodule "Carthage/Checkouts/Bolts-Swift"]
55
path = Carthage/Checkouts/Bolts-Swift
66
url = https://github.com/BoltsFramework/Bolts-Swift.git
7-
[submodule "Carthage/Checkouts/SocketRocket"]
8-
path = Carthage/Checkouts/SocketRocket
9-
url = https://github.com/parse-server-modules/SocketRocket.git
107
[submodule "Carthage/Checkouts/Parse-SDK-iOS-OSX"]
118
path = Carthage/Checkouts/Parse-SDK-iOS-OSX
129
url = https://github.com/ParsePlatform/Parse-SDK-iOS-OSX.git
10+
[submodule "Carthage/Checkouts/Starscream"]
11+
path = Carthage/Checkouts/Starscream
12+
url = https://github.com/daltoniam/Starscream.git

Cartfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
github "BoltsFramework/Bolts-Swift" == 1.3.0
2-
github "parse-server-modules/SocketRocket" == 0.6.0
32
github "ParsePlatform/Parse-SDK-iOS-OSX" == 1.14.2
3+
github "daltoniam/Starscream" == 2.0.3
44

Cartfile.resolved

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
github "BoltsFramework/Bolts-ObjC" "1.8.4"
22
github "BoltsFramework/Bolts-Swift" "1.3.0"
3-
github "parse-server-modules/SocketRocket" "0.6.0"
3+
github "daltoniam/Starscream" "2.0.3"
44
github "ParsePlatform/Parse-SDK-iOS-OSX" "1.14.2"

Carthage/Checkouts/SocketRocket

Lines changed: 0 additions & 1 deletion
This file was deleted.

Carthage/Checkouts/Starscream

Submodule Starscream added at 1385936

ParseLiveQuery.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ Pod::Spec.new do |s|
2121

2222
s.dependency 'Parse', '~> 1.14.2'
2323
s.dependency 'Bolts-Swift', '~> 1.3'
24-
s.dependency 'SocketRocketParseLiveQuery', '~> 0.6'
24+
s.dependency 'Starscream', '2.0.3'
2525
end

Sources/ParseLiveQuery.xcodeproj/project.pbxproj

Lines changed: 84 additions & 79 deletions
Large diffs are not rendered by default.

Sources/ParseLiveQuery/Client.swift

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import Foundation
1111
import Parse
1212
import BoltsSwift
13-
import SocketRocket
13+
import Starscream
1414

1515
/**
1616
This is the 'advanced' view of live query subscriptions. It allows you to customize your subscriptions
@@ -22,7 +22,7 @@ open class Client: NSObject {
2222
let applicationId: String
2323
let clientKey: String?
2424

25-
var socket: SRWebSocket?
25+
var socket: WebSocket?
2626
public var userDisconnected = false
2727

2828
// This allows us to easily plug in another request ID generation scheme, or more easily change the request id type
@@ -149,11 +149,11 @@ extension Client {
149149
handler: handler
150150
)
151151
subscriptions.append(subscriptionRecord)
152-
153-
if socket?.readyState == .OPEN {
152+
153+
if let socket = socket, socket.isConnected == true {
154154
_ = sendOperationAsync(.subscribe(requestId: subscriptionRecord.requestId, query: query as! PFQuery<PFObject>,
155155
sessionToken: PFUser.current()?.sessionToken))
156-
} else if socket == nil || socket?.readyState != .CONNECTING {
156+
} else {
157157
if !userDisconnected {
158158
reconnect()
159159
} else {
@@ -202,12 +202,12 @@ extension Client {
202202
you use the client, and should usually only be called when an error occurs.
203203
*/
204204
public func reconnect() {
205-
socket?.close()
205+
socket?.disconnect()
206206
socket = {
207-
let socket: SRWebSocket = SRWebSocket(url: host)
207+
let socket = WebSocket(url: host)
208208
socket.delegate = self
209-
socket.delegateDispatchQueue = queue
210-
socket.open()
209+
socket.callbackQueue = queue
210+
socket.connect()
211211
userDisconnected = false
212212
return socket
213213
}()
@@ -224,7 +224,7 @@ extension Client {
224224
else {
225225
return
226226
}
227-
socket.close()
227+
socket.disconnect()
228228
self.socket = nil
229229
userDisconnected = true
230230
}

Sources/ParseLiveQuery/Internal/ClientPrivate.swift

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import Foundation
1111
import Parse
12-
import SocketRocket
12+
import Starscream
1313
import BoltsSwift
1414

1515
private func parseObject<T: PFObject>(_ objectDictionary: [String:AnyObject]) throws -> T {
@@ -125,32 +125,35 @@ func == (first: Client.RequestId, second: Client.RequestId) -> Bool {
125125
// MARK: Web Socket
126126
// ---------------
127127

128-
extension Client: SRWebSocketDelegate {
129-
public func webSocket(_ webSocket: SRWebSocket, didReceiveMessage message: Any) {
130-
guard let messageString = message as? String else {
131-
fatalError("Socket got into inconsistent state and received \(message) instead.")
132-
}
133-
handleOperationAsync(messageString).continueWith { task in
128+
extension Client: WebSocketDelegate {
129+
130+
public func websocketDidReceiveData(socket: WebSocket, data: Data) {
131+
print("Received binary data but we don't handle it...")
132+
}
133+
134+
public func websocketDidReceiveMessage(socket: WebSocket, text: String) {
135+
handleOperationAsync(text).continueWith { task in
134136
if let error = task.error {
135137
print("Error: \(error)")
136138
}
137139
}
138140
}
139141

140-
public func webSocketDidOpen(_ webSocket: SRWebSocket) {
142+
public func websocketDidConnect(socket: WebSocket) {
141143
let sessionToken = PFUser.current()?.sessionToken ?? ""
142144
_ = self.sendOperationAsync(.connect(applicationId: applicationId, sessionToken: sessionToken))
143145
}
144146

145-
public func webSocket(_ webSocket: SRWebSocket, didFailWithError error: Error) {
146-
print("Error: \(error)")
147+
public func websocketDidDisconnect(socket: WebSocket, error: NSError?) {
148+
print("error: \(error)")
147149

150+
// TODO: Better retry logic, unless `disconnect()` was explicitly called
148151
if !userDisconnected {
149152
reconnect()
150153
}
151154
}
152155

153-
public func webSocket(_ webSocket: SRWebSocket, didCloseWithCode code: Int, reason: String?, wasClean: Bool) {
156+
public func webSocket(_ webSocket: WebSocket, didCloseWithCode code: Int, reason: String?, wasClean: Bool) {
154157
print("code: \(code) reason: \(reason)")
155158

156159
// TODO: Better retry logic, unless `disconnect()` was explicitly called
@@ -207,8 +210,7 @@ extension Client {
207210
let jsonEncoded = operation.JSONObjectRepresentation
208211
let jsonData = try JSONSerialization.data(withJSONObject: jsonEncoded, options: JSONSerialization.WritingOptions(rawValue: 0))
209212
let jsonString = String(data: jsonData, encoding: String.Encoding.utf8)
210-
211-
try? self.socket?.send(string:jsonString!)
213+
self.socket?.write(string: jsonString!)
212214
}
213215
}
214216

0 commit comments

Comments
 (0)