I use URLSession to connect to a websocket server. With the callback functions I update the var "isConnectionOpen" inside the Model/Service. Even though I use the @Published modifier the update is not redrawing my view. Below you can find a short overview.
Model
var isConnectionOpen = false
func openConnection()
// callback functions
func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?) {
print("WebSocket connection opened")
isConnectionOpen = true
}
ViewModel
@Published var model = Model()
View
@ObservedObject var vm: VM
var body: some View {
Text(vm.model.isConnectionOpen ? "Connected" : "Not connected")
}
here is an example of using @ObservedObject in the parent view you have to declare the object as @StateObject