diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2022-10-13 16:58:00 +0200 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2022-10-13 17:25:29 +0200 |
commit | 40d60ca6aed6cd624eac1a9bde84f36ffe4c2df9 (patch) | |
tree | edc012816709e1ed4798b4f87fe48722997e3e30 /modules/websocket | |
parent | 7464f39de8c91d6a41c14f793f8a1c1402d50240 (diff) |
[WebSocket] Fix debugger implementation.
Register module during core initialization so the remote debugger can
properly handle the "wss://" protocol.
Diffstat (limited to 'modules/websocket')
-rw-r--r-- | modules/websocket/editor/editor_debugger_server_websocket.cpp | 8 | ||||
-rw-r--r-- | modules/websocket/register_types.cpp | 10 | ||||
-rw-r--r-- | modules/websocket/remote_debugger_peer_websocket.cpp | 6 |
3 files changed, 19 insertions, 5 deletions
diff --git a/modules/websocket/editor/editor_debugger_server_websocket.cpp b/modules/websocket/editor/editor_debugger_server_websocket.cpp index 1c4ebd0f55..48bfbaa14e 100644 --- a/modules/websocket/editor/editor_debugger_server_websocket.cpp +++ b/modules/websocket/editor/editor_debugger_server_websocket.cpp @@ -40,7 +40,13 @@ void EditorDebuggerServerWebSocket::poll() { if (pending_peer.is_null() && tcp_server->is_connection_available()) { - Ref<WebSocketPeer> peer; + Ref<WebSocketPeer> peer = Ref<WebSocketPeer>(WebSocketPeer::create()); + ERR_FAIL_COND(peer.is_null()); // Bug. + + Vector<String> ws_protocols; + ws_protocols.push_back("binary"); // Compatibility for emscripten TCP-to-WebSocket. + peer->set_supported_protocols(ws_protocols); + Error err = peer->accept_stream(tcp_server->take_connection()); if (err == OK) { pending_timer = OS::get_singleton()->get_ticks_msec(); diff --git a/modules/websocket/register_types.cpp b/modules/websocket/register_types.cpp index 691b031bbd..c55a651ab0 100644 --- a/modules/websocket/register_types.cpp +++ b/modules/websocket/register_types.cpp @@ -31,11 +31,14 @@ #include "register_types.h" #include "core/config/project_settings.h" +#include "core/debugger/engine_debugger.h" #include "core/error/error_macros.h" #include "websocket_multiplayer_peer.h" #include "websocket_peer.h" +#include "remote_debugger_peer_websocket.h" + #ifdef WEB_ENABLED #include "emws_peer.h" #else @@ -55,7 +58,7 @@ static void _editor_init_callback() { #endif void initialize_websocket_module(ModuleInitializationLevel p_level) { - if (p_level == MODULE_INITIALIZATION_LEVEL_SCENE) { + if (p_level == MODULE_INITIALIZATION_LEVEL_CORE) { #ifdef WEB_ENABLED EMWSPeer::initialize(); #else @@ -64,6 +67,9 @@ void initialize_websocket_module(ModuleInitializationLevel p_level) { GDREGISTER_CLASS(WebSocketMultiplayerPeer); ClassDB::register_custom_instance_class<WebSocketPeer>(); + + EngineDebugger::register_uri_handler("ws://", RemoteDebuggerPeerWebSocket::create); + EngineDebugger::register_uri_handler("wss://", RemoteDebuggerPeerWebSocket::create); } #ifdef TOOLS_ENABLED @@ -74,7 +80,7 @@ void initialize_websocket_module(ModuleInitializationLevel p_level) { } void uninitialize_websocket_module(ModuleInitializationLevel p_level) { - if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + if (p_level != MODULE_INITIALIZATION_LEVEL_CORE) { return; } #ifndef WEB_ENABLED diff --git a/modules/websocket/remote_debugger_peer_websocket.cpp b/modules/websocket/remote_debugger_peer_websocket.cpp index fc4f51b59b..58adb76208 100644 --- a/modules/websocket/remote_debugger_peer_websocket.cpp +++ b/modules/websocket/remote_debugger_peer_websocket.cpp @@ -33,12 +33,13 @@ #include "core/config/project_settings.h" Error RemoteDebuggerPeerWebSocket::connect_to_host(const String &p_uri) { + ws_peer = Ref<WebSocketPeer>(WebSocketPeer::create()); + ERR_FAIL_COND_V(ws_peer.is_null(), ERR_BUG); + Vector<String> protocols; protocols.push_back("binary"); // Compatibility for emscripten TCP-to-WebSocket. - ws_peer = Ref<WebSocketPeer>(WebSocketPeer::create()); ws_peer->set_supported_protocols(protocols); - ws_peer->set_max_queued_packets(max_queued_messages); ws_peer->set_inbound_buffer_size((1 << 23) - 1); ws_peer->set_outbound_buffer_size((1 << 23) - 1); @@ -81,6 +82,7 @@ void RemoteDebuggerPeerWebSocket::poll() { } int RemoteDebuggerPeerWebSocket::get_max_message_size() const { + ERR_FAIL_COND_V(ws_peer.is_null(), 0); return ws_peer->get_max_packet_size(); } |