TestFlight v1.0 Beta build 3
Add new icon, help bundle, hint information when Soyuz connects. Fix some network-handling crashes and sleep/wake issues. Fix network ping/pong timeout issue. Increase web socket connection timeout value
This commit is contained in:
@@ -27,6 +27,7 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
|
||||
|
||||
// Published NWConnection for listing connection information
|
||||
@Published var connection: NWConnection?
|
||||
@Published var friendlyHostname: String = ""
|
||||
|
||||
private var socket: WebSocket?
|
||||
private var lastPingDate = Date()
|
||||
@@ -66,6 +67,11 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
|
||||
print("\(key): \(value)")
|
||||
})
|
||||
|
||||
// if isConnected == true {
|
||||
// connection?.cancel()
|
||||
// socket?.disconnect()
|
||||
// }
|
||||
//
|
||||
if connection == nil {
|
||||
connection = NWConnection(to: endpoint, using: .tcp)
|
||||
}
|
||||
@@ -89,6 +95,7 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
|
||||
connection?.cancel()
|
||||
|
||||
DispatchQueue.main.async {
|
||||
friendlyHostname = endpoint.toFriendlyString()
|
||||
self.socketHost = sanitizedHost
|
||||
self.socketPort = "\(port)"
|
||||
self.openWebsocket()
|
||||
@@ -102,6 +109,10 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
|
||||
}
|
||||
|
||||
func disconnect() {
|
||||
print("disconnect() called")
|
||||
isConnected = false
|
||||
//connection?.cancel()
|
||||
connection = nil
|
||||
socket?.disconnect()
|
||||
}
|
||||
|
||||
@@ -110,17 +121,25 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
|
||||
|
||||
// Opens the websocket connection
|
||||
private func openWebsocket() {
|
||||
//let fullUrlString = "http://\(socketHost):\(socketPort)/websocket"
|
||||
// Exit function if there is no server to connect to
|
||||
if socketHost.isEmpty || socketPort.isEmpty {
|
||||
return
|
||||
}
|
||||
|
||||
lastPingDate = Date.now
|
||||
|
||||
var request = URLRequest(url: URL(string: "http://\(socketHost):\(socketPort)/websocket")!)
|
||||
request.timeoutInterval = 5
|
||||
request.timeoutInterval = 30
|
||||
socket = WebSocket(request: request, engine: starscreamEngine)
|
||||
socket!.delegate = self
|
||||
print("About to connect to WebSocket at: \(request.debugDescription)")
|
||||
socket!.connect()
|
||||
}
|
||||
|
||||
// TODO: This may not work properly when already connected to the socket
|
||||
private func reconnectWebsocket() {
|
||||
if socket == nil {
|
||||
print("Socket doesn't exist. Fail-safe triggered.")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -132,8 +151,10 @@ class MoonrakerSocketManager: ObservableObject, WebSocketDelegate {
|
||||
func screenChangedSleepState(_ notification: Notification) {
|
||||
switch(notification.name) {
|
||||
case NSWorkspace.screensDidSleepNotification:
|
||||
print("Screen slept. Disconnecting..")
|
||||
socket?.disconnect()
|
||||
case NSWorkspace.screensDidWakeNotification:
|
||||
print("Screen awoke. Opening websocket..")
|
||||
self.openWebsocket()
|
||||
default:
|
||||
return
|
||||
|
Reference in New Issue
Block a user