improve download speeds by listening directly for ws messages

This commit is contained in:
ading2210 2024-10-29 23:30:05 -04:00
parent e598ed3be6
commit 4004409650
3 changed files with 13 additions and 2 deletions

View file

@ -0,0 +1,5 @@
/* INSERT
Module\[['"]websocket['"]\]\.emit\(['"]message['"], ?sock\.stream\.fd\)
*/
; ws_events.dispatchEvent(new Event("message"));

View file

@ -30,6 +30,8 @@ var wasm_ready = false;
var version_dict = null; var version_dict = null;
var api = null; var api = null;
var main_session = null; var main_session = null;
const ws_events = new EventTarget();
const libcurl_version = "__library_version__"; const libcurl_version = "__library_version__";
const wisp_version = "__wisp_version__"; const wisp_version = "__wisp_version__";

View file

@ -20,6 +20,9 @@ class CurlSession {
}, "viii"); }, "viii");
this.request_callbacks = {}; this.request_callbacks = {};
this.last_request_id = 0; this.last_request_id = 0;
this.ws_event_listener = () => {this.event_loop_func()};
ws_events.addEventListener("message", this.ws_event_listener);
} }
assert_ready() { assert_ready() {
@ -108,7 +111,7 @@ class CurlSession {
if (libcurl_active || this.active_requests) { if (libcurl_active || this.active_requests) {
_session_perform(this.session_ptr); _session_perform(this.session_ptr);
} }
else { else if (this.event_loop) {
clearInterval(this.event_loop); clearInterval(this.event_loop);
this.event_loop = null; this.event_loop = null;
} }
@ -120,6 +123,7 @@ class CurlSession {
} }
_session_cleanup(this.session_ptr); _session_cleanup(this.session_ptr);
this.session_ptr = null; this.session_ptr = null;
ws_events.removeEventListener(this.ws_event_listener);
Module.removeFunction(this.end_callback_ptr); Module.removeFunction(this.end_callback_ptr);
Module.removeFunction(this.headers_callback_ptr); Module.removeFunction(this.headers_callback_ptr);
Module.removeFunction(this.data_callback_ptr); Module.removeFunction(this.data_callback_ptr);