mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-05 15:49:11 +00:00
LibWebSocket+RequestServer: Add a WebSocketImpl using libcurl
This implementation can be better improved in the future by ripping out a lot of the manual logic in LibWebSocket and rely on libcurl to parse our message payloads. But for now, this uses the 'raw mode' of curl websockets in connect-only mode to allow for somewhat seamless integration into our event loop.
This commit is contained in:
parent
ad985f3227
commit
71942d53eb
Notes:
github-actions[bot]
2025-02-20 22:06:12 +00:00
Author: https://github.com/ADKaster
Commit: 71942d53eb
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3642
Reviewed-by: https://github.com/alimpfard ✅
7 changed files with 248 additions and 4 deletions
|
@ -42,9 +42,14 @@ void WebSocket::start()
|
|||
m_impl->on_connected = [this] {
|
||||
if (m_state != WebSocket::InternalState::EstablishingProtocolConnection)
|
||||
return;
|
||||
set_state(WebSocket::InternalState::SendingClientHandshake);
|
||||
send_client_handshake();
|
||||
drain_read();
|
||||
if (m_impl->handshake_complete_when_connected()) {
|
||||
set_state(WebSocket::InternalState::Open);
|
||||
notify_open();
|
||||
} else {
|
||||
set_state(WebSocket::InternalState::SendingClientHandshake);
|
||||
send_client_handshake();
|
||||
drain_read();
|
||||
}
|
||||
};
|
||||
m_impl->on_ready_to_read = [this] {
|
||||
drain_read();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue