diff options
| author | 2022-06-19 23:30:38 -0700 | |
|---|---|---|
| committer | 2022-06-22 06:56:47 -0700 | |
| commit | d057b89a335042df6d031b67f7d3f843080d8269 (patch) | |
| tree | 33f973f2a8d57b2aaed8d32dd8efb61853954a09 /src/javascript/jsc/bindings/ScriptExecutionContext.cpp | |
| parent | dda85d92c9bafd0fe86540efd0f30be3e6c08c03 (diff) | |
| download | bun-d057b89a335042df6d031b67f7d3f843080d8269.tar.gz bun-d057b89a335042df6d031b67f7d3f843080d8269.tar.zst bun-d057b89a335042df6d031b67f7d3f843080d8269.zip | |
Sending works
Diffstat (limited to 'src/javascript/jsc/bindings/ScriptExecutionContext.cpp')
| -rw-r--r-- | src/javascript/jsc/bindings/ScriptExecutionContext.cpp | 74 | 
1 files changed, 13 insertions, 61 deletions
| diff --git a/src/javascript/jsc/bindings/ScriptExecutionContext.cpp b/src/javascript/jsc/bindings/ScriptExecutionContext.cpp index 9c6735993..73b8b4c01 100644 --- a/src/javascript/jsc/bindings/ScriptExecutionContext.cpp +++ b/src/javascript/jsc/bindings/ScriptExecutionContext.cpp @@ -55,73 +55,25 @@ us_socket_context_t* ScriptExecutionContext::webSocketContextNoSSL()  }  template<bool SSL> -static uWS::WebSocketContext<SSL, false, WebCore::WebSocket*>* registerWebSocketClientContext(ScriptExecutionContext* script, us_socket_context_t* parent) +static us_socket_context_t* registerWebSocketClientContext(ScriptExecutionContext* script, us_socket_context_t* parent)  { -    uWS::Loop* loop = uWS::Loop::get(); -    uWS::WebSocketContext<SSL, false, WebCore::WebSocket*>* ctx = uWS::WebSocketContext<SSL, false, WebCore::WebSocket*>::createClient(loop, parent); - -    auto* opts = ctx->getExt(); - -    /* Maximum message size we can receive */ -    unsigned int maxPayloadLength = 16 * 1024; -    /* 2 minutes timeout is good */ -    unsigned short idleTimeout = 120; -    /* 64kb backpressure is probably good */ -    unsigned int maxBackpressure = 64 * 1024; -    bool closeOnBackpressureLimit = false; -    /* This one depends on kernel timeouts and is a bad default */ -    bool resetIdleTimeoutOnSend = false; -    /* A good default, esp. for newcomers */ -    bool sendPingsAutomatically = false; -    /* Maximum socket lifetime in seconds before forced closure (defaults to disabled) */ -    unsigned short maxLifetime = 0; - -    opts->maxPayloadLength = maxPayloadLength; -    opts->maxBackpressure = maxBackpressure; -    opts->closeOnBackpressureLimit = closeOnBackpressureLimit; -    opts->resetIdleTimeoutOnSend = resetIdleTimeoutOnSend; -    opts->sendPingsAutomatically = sendPingsAutomatically; -    // opts->compression = compression; -    // TODO: -    opts->compression = uWS::CompressOptions::DISABLED; - -    opts->openHandler = [](uWS::WebSocket<SSL, false, WebCore::WebSocket*>* ws) { -        WebCore::WebSocket* webSocket = *ws->getUserData(); -        webSocket->didConnect(); -    }; - -    opts->messageHandler = [](uWS::WebSocket<SSL, false, WebCore::WebSocket*>* ws, std::string_view input, uWS::OpCode opCode) { -        WebCore::WebSocket* webSocket = *ws->getUserData(); -        if (opCode == uWS::OpCode::BINARY) { -            webSocket->didReceiveBinaryData({ const_cast<unsigned char*>(reinterpret_cast<const unsigned char*>(input.data())), input.length() }); -        } else { -            webSocket->didReceiveMessage(WTF::String::fromUTF8(input.data(), input.length())); -        } -    }; - -    // pts->drainHandler = [](uWS::WebSocket<SSL, false, WebCore::WebSocket>* ws, std::string_view input, uWS::OpCode opCode) { -    //    WebCore::WebSocket* webSocket = *ws->getUserData(); -    //     webSocket->didReceiveData(input.data(), input.length()); -    // }; - -    opts->closeHandler = [](uWS::WebSocket<SSL, false, WebCore::WebSocket*>* ws, int code, std::string_view message) { -        WebCore::WebSocket* webSocket = *ws->getUserData(); -        webSocket->didClose( -            ws->getBufferedAmount(), -            code, -            WTF::String::fromUTF8( -                message.data(), -                message.length())); -    }; - -    return ctx; +    us_loop_t* loop = (us_loop_t*)uWS::Loop::get(); +    if constexpr (SSL) { +        us_socket_context_t* child = us_create_child_socket_context(1, parent, sizeof(size_t)); +        Bun__WebSocketClientTLS__register(script->jsGlobalObject(), loop, child); +        return child; +    } else { +        us_socket_context_t* child = us_create_child_socket_context(0, parent, sizeof(size_t)); +        Bun__WebSocketClient__register(script->jsGlobalObject(), loop, child); +        return child; +    }  } -uWS::WebSocketContext<false, false, WebSocket*>* ScriptExecutionContext::connectedWebSocketKindClient() +us_socket_context_t* ScriptExecutionContext::connectedWebSocketKindClient()  {      return registerWebSocketClientContext<false>(this, webSocketContextNoSSL());  } -uWS::WebSocketContext<true, false, WebSocket*>* ScriptExecutionContext::connectedWebSocketKindClientSSL() +us_socket_context_t* ScriptExecutionContext::connectedWebSocketKindClientSSL()  {      return registerWebSocketClientContext<true>(this, webSocketContextSSL());  } | 
