I am writing a custom iOS app to use as a control center for my home. The strange thing I am seeing is every event appears to be sent sixteen times when I print the events to the console. I added a simple counter and this is what I see in the console:
Switch: off - message: 16
Switch: off - message: 17
Switch: off - message: 18
Switch: off - message: 19
Switch: off - message: 20
Switch: off - message: 21
Switch: off - message: 22
Switch: off - message: 23
Switch: off - message: 24
Switch: off - message: 25
Switch: off - message: 26
Switch: off - message: 27
Switch: off - message: 28
Switch: off - message: 29
Switch: off - message: 30
Switch: off - message: 31
Switch: on - message: 80
Switch: on - message: 81
Switch: on - message: 82
Switch: on - message: 83
Switch: on - message: 84
Switch: on - message: 85
Switch: on - message: 86
Switch: on - message: 87
Switch: on - message: 88
Switch: on - message: 89
Switch: on - message: 90
Switch: on - message: 91
Switch: on - message: 92
Switch: on - message: 93
Switch: on - message: 94
Switch: on - message: 95
I turned the device off and on once from the Habitat device page. You can see all the events I logged. Is this an expected behavior? Otherwise everything is working well.
I am running version. 2.3.6.146 on a C7 hub.
I'm new to Swift but nothing is jumping out at me in the code.
private func setupEventSocket() {
let hubitatURL = URL(string: "ws://192.168.107.7/eventsocket")!
var request = URLRequest(url: hubitatURL)
request.addValue("Bearer 42...ed", forHTTPHeaderField: "Authorization")
webSocketTask = URLSession.shared.webSocketTask(with: request)
receive()
webSocketTask?.resume()
}
private func receive() {
counter1 += 1
// print("receive(): \(counter1)")
webSocketTask?.receive { [weak self] result in
switch result {
case .success(let message):
switch message {
case .data(let data):
//self?.handleHubitatEvent(data)
_ = data // just to quiet warnings
case .string(let text):
self?.handleTextMessage(text)
@unknown default:
break
}
self?.receive()
case .failure(let error):
print("WebSocket receive error: \(error)")
}
}
}
I know Swift is out of scope. I'm just adding some background and hopefully somebody has an explanation for the multiple received messages.
Thanks