1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-06 12:20:30 +00:00

[WebSocket] Fix WSLClient connection status.

Note, this keeps the old behaviour of reporting CONNECTION_CONNECTED
while disconnecting.
We should change this before 4.0, but needs further refactoring of the
WebSocket classes.
This commit is contained in:
Fabio Alessandrelli
2022-05-04 19:32:25 +02:00
parent e5137fafbe
commit 09a48e1055
2 changed files with 7 additions and 8 deletions

View File

@@ -91,6 +91,7 @@ void WSLClient::_do_handshake() {
data->id = 1;
_peer->make_context(data, _in_buf_size, _in_pkt_size, _out_buf_size, _out_pkt_size);
_peer->set_no_delay(true);
_status = CONNECTION_CONNECTED;
_on_connect(protocol);
break;
}
@@ -231,6 +232,7 @@ Error WSLClient::connect_to_host(String p_host, String p_path, uint16_t p_port,
}
request += "\r\n";
_request = request.utf8();
_status = CONNECTION_CONNECTING;
return OK;
}
@@ -337,21 +339,19 @@ Ref<WebSocketPeer> WSLClient::get_peer(int p_peer_id) const {
}
MultiplayerPeer::ConnectionStatus WSLClient::get_connection_status() const {
// This is surprising, but keeps the current behaviour to allow clean close requests.
// TODO Refactor WebSocket and split Client/Server/Multiplayer like done in other peers.
if (_peer->is_connected_to_host()) {
return CONNECTION_CONNECTED;
}
if (_tcp->get_status() == StreamPeerTCP::STATUS_CONNECTING || _resolver_id != IP::RESOLVER_INVALID_ID) {
return CONNECTION_CONNECTING;
}
return CONNECTION_DISCONNECTED;
return _status;
}
void WSLClient::disconnect_from_host(int p_code, String p_reason) {
_peer->close(p_code, p_reason);
_connection = Ref<StreamPeer>(nullptr);
_tcp = Ref<StreamPeerTCP>(memnew(StreamPeerTCP));
_status = CONNECTION_DISCONNECTED;
_key = "";
_host = "";