Fix timeout handling on socket message send

This commit is contained in:
Yegor Vialov 2019-11-29 11:24:29 +00:00
parent dd5f8b155d
commit 6f3a2bb78d

View File

@ -324,17 +324,12 @@ class ConnectionManager {
_messageResolver[callbackName] = _completer; _messageResolver[callbackName] = _completer;
String rawMessage = json.encode(dataObject); String rawMessage = json.encode(dataObject);
if (!isConnected) { if (!isConnected) {
//TODO fix onTImeout _connect().timeout(connectTimeout).then((_) {
_connect().timeout(connectTimeout, onTimeout: (){
if (!_completer.isCompleted) {
_completer.completeError(HAError("No connection to Home Assistant", actions: [HAErrorAction.reconnect()]));
}
}).then((_) {
Logger.d("[Sending] ==> ${auth ? "type="+dataObject['type'] : rawMessage}"); Logger.d("[Sending] ==> ${auth ? "type="+dataObject['type'] : rawMessage}");
_socket.sink.add(rawMessage); _socket.sink.add(rawMessage);
}).catchError((e) { }).catchError((e) {
if (!_completer.isCompleted) { if (!_completer.isCompleted) {
_completer.completeError(e); _completer.completeError(HAError("No connection to Home Assistant", actions: [HAErrorAction.reconnect()]));
} }
}); });
} else { } else {