From dae5caff1480670d77d32227316c75e0789d590b Mon Sep 17 00:00:00 2001 From: David Koontz Date: Thu, 23 Jul 2026 02:26:02 -0700 Subject: [PATCH] WebSocket Client, backpressure for client + server --- .gitignore | 2 + gren.json | 4 +- integration-tests/run-tests.sh | 5 + integration-tests/websocket/.gitignore | 3 +- integration-tests/websocket/Makefile | 14 +- .../gren_lang_core__7_0_0.pkg.gz | Bin 103200 -> 103277 bytes .../gren_packages/gren_lang_url__6_0_0.pkg.gz | Bin 9240 -> 9218 bytes integration-tests/websocket/run.mjs | 45 ++ .../websocket/src/ClientTests.gren | 452 ++++++++++++++++++ .../websocket/src/{Main.gren => Server.gren} | 105 +++- integration-tests/websocket/test/fixtures.mjs | 2 +- src/Gren/Kernel/WebSocketClient.js | 233 +++++++++ src/Gren/Kernel/WebSocketServer.js | 72 ++- src/WebSocketClient.gren | 245 ++++++++++ src/WebSocketClient/Connection.gren | 167 +++++++ src/WebSocketServer.gren | 63 ++- 16 files changed, 1353 insertions(+), 59 deletions(-) create mode 100644 integration-tests/websocket/run.mjs create mode 100644 integration-tests/websocket/src/ClientTests.gren rename integration-tests/websocket/src/{Main.gren => Server.gren} (60%) create mode 100644 src/Gren/Kernel/WebSocketClient.js create mode 100644 src/WebSocketClient.gren create mode 100644 src/WebSocketClient/Connection.gren diff --git a/.gitignore b/.gitignore index 2600dcb..01b48f3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ artifacts.dat docs.json tests/app + +integration-tests/websocket/app diff --git a/gren.json b/gren.json index 02c1df6..06e27d3 100644 --- a/gren.json +++ b/gren.json @@ -17,7 +17,9 @@ "HttpServer", "HttpServer.Response", "WebSocketServer", - "WebSocketServer.Connection" + "WebSocketServer.Connection", + "WebSocketClient", + "WebSocketClient.Connection" ], "gren-version": "0.6.0 <= v < 0.7.0", "dependencies": { diff --git a/integration-tests/run-tests.sh b/integration-tests/run-tests.sh index 6d30690..fac96dd 100755 --- a/integration-tests/run-tests.sh +++ b/integration-tests/run-tests.sh @@ -31,3 +31,8 @@ echo -e "Running websocket tests...\n\n" pushd websocket make test || exit 1 popd + +echo -e "Running websocket-client tests...\n\n" +pushd websocket-client +make test || exit 1 +popd diff --git a/integration-tests/websocket/.gitignore b/integration-tests/websocket/.gitignore index 066f3f8..3add3f5 100644 --- a/integration-tests/websocket/.gitignore +++ b/integration-tests/websocket/.gitignore @@ -1,5 +1,6 @@ .gren/ -app +server-app +client-tests-app node_modules/ /test-results/ /playwright-report/ diff --git a/integration-tests/websocket/Makefile b/integration-tests/websocket/Makefile index 2d45a2b..bbb714e 100644 --- a/integration-tests/websocket/Makefile +++ b/integration-tests/websocket/Makefile @@ -1,9 +1,13 @@ -app: Makefile gren.json src/Main.gren - gren make --optimize Main --output=app +server-app: Makefile gren.json src/Server.gren + gren make --optimize Server --output=server-app + +client-tests-app: Makefile gren.json src/ClientTests.gren + gren make --optimize ClientTests --output=client-tests-app .PHONY: test -test: app node_modules - npm test +test: server-app client-tests-app node_modules + node run.mjs + npx mocha --require test/fixtures.mjs node_modules: package.json package-lock.json npm ci @@ -12,4 +16,4 @@ node_modules: package.json package-lock.json clean: rm -rf .gren rm -rf node_modules - rm -f app + rm -f server-app client-tests-app diff --git a/integration-tests/websocket/gren_packages/gren_lang_core__7_0_0.pkg.gz b/integration-tests/websocket/gren_packages/gren_lang_core__7_0_0.pkg.gz index e3bb45b0c6c1e8df3bb88feb64e7c077e0602b6b..5ef93cbdd5609500ca1cf7378569496e7aa00d19 100644 GIT binary patch literal 103277 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 literal 103200 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

A6Y>viU&w26_0>DHs?P*&$->^a<3dQjg#c#Q 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≻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 UtWfK<_2tX|4{18$Of|L!0IW6At^fc4 diff --git a/integration-tests/websocket/gren_packages/gren_lang_url__6_0_0.pkg.gz b/integration-tests/websocket/gren_packages/gren_lang_url__6_0_0.pkg.gz index 8f624b4a3b34b245a05ac7f3e4f9fc82718fdc51..f6e28d88d9f969c16e3c6aca740cd9434e413af4 100644 GIT binary patch literal 9218 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 diff --git a/integration-tests/websocket/run.mjs b/integration-tests/websocket/run.mjs new file mode 100644 index 0000000..a512631 --- /dev/null +++ b/integration-tests/websocket/run.mjs @@ -0,0 +1,45 @@ +import * as path from "node:path"; +import * as childProc from "node:child_process"; + +// Start the Gren WebSocket server, run the Gren client tests, then shut down. +// The mocha server tests are run separately by the Makefile (they start their +// own server instance via fixtures.mjs). + +function fork(name) { + return childProc.fork(path.resolve(import.meta.dirname, name), [], { + silent: true, + }); +} + +function waitForServerStart(proc, timeoutMs = 5000) { + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + reject(new Error("Server did not start within 5000ms")); + }, timeoutMs); + + proc.stdout.on("data", (data) => { + if (data.toString().includes("WebSocket server started")) { + clearTimeout(timeout); + proc.stdout.resume(); + proc.stderr.resume(); + resolve(); + } + }); + + proc.stderr.resume(); + }); +} + +const server = fork("server-app"); +await waitForServerStart(server); + +const exitCode = await new Promise((resolve) => { + const client = fork("client-tests-app"); + client.stdout.on("data", (data) => process.stdout.write(data)); + client.stderr.on("data", (data) => process.stderr.write(data)); + client.on("exit", resolve); +}); + +server.kill(); + +process.exit(exitCode); diff --git a/integration-tests/websocket/src/ClientTests.gren b/integration-tests/websocket/src/ClientTests.gren new file mode 100644 index 0000000..830732e --- /dev/null +++ b/integration-tests/websocket/src/ClientTests.gren @@ -0,0 +1,452 @@ +module ClientTests exposing (main) + +import Array exposing (Array) +import Bytes exposing (Bytes) +import Init +import Node +import Node exposing (Environment, Program) +import Stream +import Stream.Log as Log +import Task exposing (Task) +import Time +import WebSocketClient +import WebSocketClient.Connection as WsConn + + +main : Program Model Msg +main = + Node.defineProgram + { init = init + , update = update + , subscriptions = \_ -> Sub.none + } + + + +-- MODEL + + +type alias Model = + { env : Environment + , exitCode : Int + } + + +type Msg + = TestsCompleted (Array TestResult) + | OutputDone Int + + + +-- INIT + + +init : Environment -> Init.Task { model : Model, command : Cmd Msg } +init env = + Init.await WebSocketClient.initialize <| + \permission -> + Node.startProgram + { model = { env = env, exitCode = 0 } + , command = + runAllTests permission + |> Task.perform TestsCompleted + } + + + +-- UPDATE + + +update : Msg -> Model -> { model : Model, command : Cmd Msg } +update msg model = + when msg is + TestsCompleted results -> + let + summary = + formatResults results + + passCount = + Array.foldl + (\r acc -> + if r.passed then + acc + 1 + + else + acc + ) + 0 + results + + exitCode = + if passCount == Array.length results then + 0 + + else + 1 + in + { model = { model | exitCode = exitCode } + , command = + Log.line model.env.stdout summary + |> Task.andThen (\_ -> Node.setExitCode exitCode) + |> Task.perform (\_ -> OutputDone exitCode) + } + + OutputDone code -> + { model = model + , command = Node.exitWithCode code + } + + + +-- TEST RUNNER + + +type alias TestResult = + { name : String + , passed : Bool + , detail : String + } + + +runAllTests : WebSocketClient.Permission -> Task Never (Array TestResult) +runAllTests permission = + [ test "connects and receives welcome" (testWelcome permission) + , test "echoes a text message" (testEchoText permission) + , test "echoes an empty text message" (testEchoEmpty permission) + , test "echoes unicode text" (testEchoUnicode permission) + , test "echoes multiple messages in order" (testMultipleMessages permission) + , test "echoes a binary message" (testEchoBinary permission) + , test "detects server-initiated close" (testServerClose permission) + , test "writes complete quickly with no server delay" (testFastWrites permission) + , test "writes are delayed by server backpressure" (testBackpressure permission) + ] + |> Task.sequence + + +test : String -> Task WsError Bool -> Task Never TestResult +test name task_ = + task_ + |> Task.map + (\passed -> + { name = name + , passed = passed + , detail = + if passed then + "" + + else + "Assertion failed" + } + ) + |> Task.onError + (\err -> + Task.succeed + { name = name + , passed = False + , detail = "Error: " ++ errorToString err + } + ) + + + +-- TESTS + + +testWelcome : WebSocketClient.Permission -> Task WsError Bool +testWelcome permission = + connectAndReceiveWelcome permission + |> Task.map (\conn -> True) + + +testEchoText : WebSocketClient.Permission -> Task WsError Bool +testEchoText permission = + connectAndReceiveWelcome permission + |> Task.andThen (\conn -> sendAndReadEcho conn "hello") + |> Task.map (\echo -> echo == "echo:hello") + + +testEchoEmpty : WebSocketClient.Permission -> Task WsError Bool +testEchoEmpty permission = + connectAndReceiveWelcome permission + |> Task.andThen (\conn -> sendAndReadEcho conn "") + |> Task.map (\echo -> echo == "echo:") + + +testEchoUnicode : WebSocketClient.Permission -> Task WsError Bool +testEchoUnicode permission = + connectAndReceiveWelcome permission + |> Task.andThen (\conn -> sendAndReadEcho conn "snow \u{2744} flake") + |> Task.map (\echo -> echo == "echo:snow \u{2744} flake") + + +testMultipleMessages : WebSocketClient.Permission -> Task WsError Bool +testMultipleMessages permission = + connectAndReceiveWelcome permission + |> Task.andThen + (\conn -> + sendText conn "first" + |> Task.andThen (\_ -> sendText conn "second") + |> Task.andThen (\_ -> sendText conn "third") + |> Task.andThen (\_ -> collectAndCheckEchoes conn) + ) + + +collectAndCheckEchoes : WebSocketClient.Connection -> Task WsError Bool +collectAndCheckEchoes conn = + readText conn + |> Task.andThen (\e1 -> + readText conn + |> Task.andThen (\e2 -> + readText conn + |> Task.map (\e3 -> + e1 == "echo:first" && e2 == "echo:second" && e3 == "echo:third" + ) + ) + ) + + +testEchoBinary : WebSocketClient.Permission -> Task WsError Bool +testEchoBinary permission = + connectAndReceiveWelcome permission + |> Task.andThen + (\conn -> + WsConn.writable conn + |> Stream.write (WebSocketClient.BinaryMessage (Bytes.fromString "binary-data")) + |> Task.mapError StreamErr + |> Task.andThen (\_ -> + Stream.read (WsConn.readable conn) + |> Task.mapError StreamErr + ) + ) + |> Task.map + (\msg -> + when msg is + WebSocketClient.BinaryMessage bytes -> + Bytes.toString bytes == Just "binary-data" + + _ -> + False + ) + + +testServerClose : WebSocketClient.Permission -> Task WsError Bool +testServerClose permission = + connectAndReceiveWelcome permission + |> Task.andThen + (\conn -> + sendText conn "please-close" + |> Task.andThen + (\_ -> + Stream.read (WsConn.readable conn) + |> Task.mapError StreamErr + |> Task.map (\_ -> False) + |> Task.onError + (\wsErr -> + when wsErr is + StreamErr Stream.Closed -> + Task.succeed True + + _ -> + Task.fail wsErr + ) + ) + ) + + +testFastWrites : WebSocketClient.Permission -> Task WsError Bool +testFastWrites permission = + connectAndReceiveWelcome permission + |> Task.andThen (\conn -> setDelay conn 0) + |> Task.andThen (\conn -> timeAction (writeLargeMessages conn 10 102400)) + |> Task.map (\elapsed -> elapsed < 5000) + + +testBackpressure : WebSocketClient.Permission -> Task WsError Bool +testBackpressure permission = + connectAndReceiveWelcome permission + |> Task.andThen (\conn -> setDelay conn 200) + |> Task.andThen (\conn -> timeAction (writeLargeMessages conn 20 102400)) + |> Task.andThen + (\delayedElapsed -> + connectAndReceiveWelcome permission + |> Task.andThen (\conn -> setDelay conn 0) + |> Task.andThen (\conn -> timeAction (writeLargeMessages conn 20 102400)) + |> Task.map (\fastElapsed -> + delayedElapsed > fastElapsed + 1000 + ) + ) + + + +-- ERROR TYPES + + +type WsError + = ConnectErr WebSocketClient.ConnectError + | StreamErr Stream.Error + + +errorToString : WsError -> String +errorToString err = + when err is + ConnectErr (WebSocketClient.ConnectError { code, message }) -> + "ConnectError " ++ code ++ ": " ++ message + + StreamErr streamErr -> + when streamErr is + Stream.Closed -> + "Stream.Closed" + + Stream.Cancelled reason -> + "Stream.Cancelled: " ++ reason + + Stream.Locked -> + "Stream.Locked" + + + +-- HELPERS + + +connectAndReceiveWelcome : WebSocketClient.Permission -> Task WsError WebSocketClient.Connection +connectAndReceiveWelcome permission = + WebSocketClient.connect permission { url = url, options = [] } + |> Task.mapError ConnectErr + |> Task.andThen (\conn -> + Stream.read (WsConn.readable conn) + |> Task.mapError StreamErr + |> Task.map (\_ -> conn) + ) + + +sendText : WebSocketClient.Connection -> String -> Task WsError {} +sendText conn text = + WsConn.writable conn + |> Stream.write (WebSocketClient.TextMessage text) + |> Task.mapError StreamErr + |> Task.map (\_ -> {}) + + +readText : WebSocketClient.Connection -> Task WsError String +readText conn = + Stream.read (WsConn.readable conn) + |> Task.mapError StreamErr + |> Task.map + (\msg -> + when msg is + WebSocketClient.TextMessage text -> + text + + _ -> + "" + ) + + +sendAndReadEcho : WebSocketClient.Connection -> String -> Task WsError String +sendAndReadEcho conn text = + sendText conn text + |> Task.andThen (\_ -> readText conn) + + +setDelay : WebSocketClient.Connection -> Int -> Task WsError WebSocketClient.Connection +setDelay conn ms = + sendText conn ("delay:" ++ String.fromInt ms) + |> Task.andThen (\_ -> readText conn) + |> Task.map (\_ -> conn) + + +writeLargeMessages : WebSocketClient.Connection -> Int -> Int -> Task WsError {} +writeLargeMessages conn count size = + let + msg = + WebSocketClient.TextMessage (String.repeat size "x") + in + writeLoop conn msg count + + +writeLoop : WebSocketClient.Connection -> WebSocketClient.Message -> Int -> Task WsError {} +writeLoop conn msg remaining = + if remaining <= 0 then + Task.succeed {} + + else + WsConn.writable conn + |> Stream.write msg + |> Task.mapError StreamErr + |> Task.andThen (\_ -> writeLoop conn msg (remaining - 1)) + + +timeAction : Task WsError a -> Task WsError Int +timeAction action = + Time.now + |> Task.andThen (\start -> + action + |> Task.andThen (\_ -> + Time.now + |> Task.map (\end_ -> + Time.posixToMillis end_ - Time.posixToMillis start + ) + ) + ) + + + +-- OUTPUT + + +formatResults : Array TestResult -> String +formatResults results = + let + total = + Array.length results + + formatLine r = + (if r.passed then + "PASS" + + else + "FAIL" + ) + ++ " " + ++ r.name + ++ (if r.detail == "" then + "" + + else + " - " ++ r.detail + ) + + lines = + Array.foldl + (\r acc -> + if acc == "" then + formatLine r + + else + acc ++ "\n" ++ formatLine r + ) + "" + results + + passCount = + Array.foldl + (\r acc -> + if r.passed then + acc + 1 + + else + acc + ) + 0 + results + in + "\n" ++ lines ++ "\n\n" ++ String.fromInt passCount ++ "/" ++ String.fromInt total ++ " passed" + + + +-- CONSTANTS + + +url : String +url = + "ws://127.0.0.1:8085" diff --git a/integration-tests/websocket/src/Main.gren b/integration-tests/websocket/src/Server.gren similarity index 60% rename from integration-tests/websocket/src/Main.gren rename to integration-tests/websocket/src/Server.gren index 0b9dfca..c3d1565 100644 --- a/integration-tests/websocket/src/Main.gren +++ b/integration-tests/websocket/src/Server.gren @@ -1,10 +1,11 @@ -module Main exposing (main) +module Server exposing (main) import Node exposing (Environment, Program) import Init import Bytes exposing (Bytes) import Dict exposing (Dict) import Stream +import Process import Stream.Log import WebSocketServer import WebSocketServer.Connection as WsConn @@ -25,6 +26,7 @@ type alias Model = , stderr : Stream.Writable Bytes , server : Maybe WebSocketServer.Server , connections : Dict Int WebSocketServer.Connection + , delays : Dict Int Int } @@ -35,6 +37,7 @@ type Msg { connId : Int , result : Result Stream.Error WebSocketServer.Message } + | PerformRead Int | ClientDisconnected { connection : WebSocketServer.Connection, reason : WebSocketServer.CloseReason } | SendResult (Result WsConn.Error {}) @@ -48,9 +51,10 @@ init env = , stderr = env.stderr , server = Nothing , connections = Dict.empty + , delays = Dict.empty } , command = - WebSocketServer.createServer wsPermission { host = "127.0.0.1", port_ = 8085 } + WebSocketServer.createServer wsPermission { host = "127.0.0.1", port_ = 8085, options = [ WebSocketServer.ReadBufferCapacity 2 ] } |> Task.attempt ServerCreated } @@ -97,9 +101,12 @@ update msg model = Ok message -> when Dict.get connId model.connections is Just connection -> - { model = model - , command = echoAndContinue connId connection message - } + let + delay = + Dict.get connId model.delays + |> Maybe.withDefault 0 + in + handleMessage connId connection message delay model Nothing -> { model = model @@ -123,6 +130,18 @@ update msg model = , command = Cmd.none } + PerformRead connId -> + when Dict.get connId model.connections is + Just connection -> + { model = model + , command = readFromStream connId (WsConn.readable connection) + } + + Nothing -> + { model = model + , command = Cmd.none + } + ClientDisconnected { connection } -> let connId = @@ -130,7 +149,8 @@ update msg model = in { model = { model - | connections = Dict.remove connId model.connections + | connections = + Dict.remove connId model.connections } , command = Cmd.none } @@ -162,28 +182,67 @@ readFromStream connId readable = (\result -> ReadResult { connId = connId, result = result }) -{-| Writes the response for a message, then schedules the next read. The echo is -sent via WebSocketServer.Connection.send and the next read is issued -concurrently; messages are still processed and echoed one at a time because only -one Stream.read is in flight per connection at a time. +{-| Handles an incoming message: either a control command (delay, please-close) +or an echo. For echoes, the next read is delayed by the connection's configured +delay so the server processes messages at a controlled rate. This slow reading +causes client-side backpressure when the client sends faster than the server +consumes. -} -echoAndContinue : Int -> WebSocketServer.Connection -> WebSocketServer.Message -> Cmd Msg -echoAndContinue connId connection message = +handleMessage : Int -> WebSocketServer.Connection -> WebSocketServer.Message -> Int -> Model -> { model : Model, command : Cmd Msg } +handleMessage connId connection message delay model = when message is WebSocketServer.TextMessage text -> - if text == "please-close" then - WsConn.close connection 1000 "server-initiated-close" - |> Task.attempt SendResult + if String.startsWith "delay:" text then + let + newDelay = + text + |> String.dropFirst 6 + |> String.toInt + |> Maybe.withDefault 0 + in + { model = { model | delays = Dict.set connId newDelay model.delays } + , command = + Cmd.batch + [ WsConn.send connection (WebSocketServer.TextMessage ("delay-set:" ++ String.fromInt newDelay)) + |> Task.attempt SendResult + , readFromStream connId (WsConn.readable connection) + ] + } + + else if text == "please-close" then + { model = model + , command = + WsConn.close connection 1000 "server-initiated-close" + |> Task.attempt SendResult + } + else + { model = model + , command = + Cmd.batch + [ WsConn.send connection (WebSocketServer.TextMessage ("echo:" ++ text)) + |> Task.attempt SendResult + , scheduleNextRead connId delay + ] + } + + WebSocketServer.BinaryMessage bytes -> + { model = model + , command = Cmd.batch - [ WsConn.send connection (WebSocketServer.TextMessage ("echo:" ++ text)) + [ WsConn.send connection (WebSocketServer.BinaryMessage bytes) |> Task.attempt SendResult - , readFromStream connId (WsConn.readable connection) + , scheduleNextRead connId delay ] + } - WebSocketServer.BinaryMessage bytes -> - Cmd.batch - [ WsConn.send connection (WebSocketServer.BinaryMessage bytes) - |> Task.attempt SendResult - , readFromStream connId (WsConn.readable connection) - ] + +scheduleNextRead : Int -> Int -> Cmd Msg +scheduleNextRead connId delay = + if delay > 0 then + Process.sleep (toFloat delay) + |> Task.attempt (\_ -> PerformRead connId) + + else + Task.succeed {} + |> Task.attempt (\_ -> PerformRead connId) diff --git a/integration-tests/websocket/test/fixtures.mjs b/integration-tests/websocket/test/fixtures.mjs index fa08f0c..153b1db 100644 --- a/integration-tests/websocket/test/fixtures.mjs +++ b/integration-tests/websocket/test/fixtures.mjs @@ -4,7 +4,7 @@ import * as childProc from "node:child_process"; let proc; export function mochaGlobalSetup() { - const appPath = path.resolve(import.meta.dirname, "../app"); + const appPath = path.resolve(import.meta.dirname, "../server-app"); proc = childProc.fork(appPath, [], { silent: true }); return new Promise((resolve, reject) => { diff --git a/src/Gren/Kernel/WebSocketClient.js b/src/Gren/Kernel/WebSocketClient.js new file mode 100644 index 0000000..8a42c4b --- /dev/null +++ b/src/Gren/Kernel/WebSocketClient.js @@ -0,0 +1,233 @@ +/* + +import Gren.Kernel.Scheduler exposing (binding, succeed, fail, rawSpawn) +import WebSocketClient exposing (ConnectError, TextMessage, BinaryMessage) +import WebSocketClient.Connection as WsConn exposing (Error) +import Platform exposing (sendToApp) + +*/ + +var _WebSocketClient_nextConnectionId = 0; + +var _WebSocketClient_connect = F2(function (url, readBufferCapacity) { + return __Scheduler_binding(function (callback) { + var WebSocket = require("ws"); + var client = new WebSocket(url); + + var opened = false; + var called = false; + + function safeCallback(val) { + if (!called) { + called = true; + callback(val); + } + } + + client.__grenStreamClosed = false; + + // Readable stream for incoming messages. The controller is retained on + // the client so event closures can enqueue messages and close/error the + // stream when the connection ends. Read using the Stream module. + // + // Backpressure: the stream uses a CountQueuingStrategy with a configurable + // highWaterMark (readBufferCapacity). When the queue fills up, the socket + // is paused so the remote peer stops sending. The pull callback resumes + // the socket when the consumer drains the queue below the capacity. + var messageStream = new ReadableStream( + { + start: function (controller) { + client.__grenStreamController = controller; + }, + pull: function () { + if (client._socket) { + client._socket.resume(); + } + }, + }, + new CountQueuingStrategy({ highWaterMark: readBufferCapacity }), + ); + + // Writable stream for outgoing messages. Writing a Message value to this + // stream sends it over the WebSocket. Backpressure is respected: a write + // resolves only once ws.send's callback fires. + var sendStream = new WritableStream({ + start: function (controller) { + client.__grenWritableController = controller; + }, + write: function (chunk) { + return new Promise(function (resolve, reject) { + try { + if (typeof chunk.a === "string") { + client.send(chunk.a, function (err) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + } else { + var bytes = chunk.a; + var buf = Buffer.from( + bytes.buffer, + bytes.byteOffset, + bytes.byteLength, + ); + client.send(buf, function (err) { + if (err) { + reject(err); + } else { + resolve(); + } + }); + } + } catch (e) { + reject(e); + } + }); + }, + }); + + var connection = { + __$id: _WebSocketClient_nextConnectionId++, + __$client: client, + __$readable: messageStream, + __$writable: sendStream, + __grenCloseHandlers: [], + }; + + client.on("open", function () { + opened = true; + safeCallback(__Scheduler_succeed(connection)); + }); + + client.on("message", function (data, isBinary) { + if (client.__grenStreamClosed) return; + + var msg = isBinary + ? __WebSocketClient_BinaryMessage( + new DataView(data.buffer, data.byteOffset, data.byteLength), + ) + : __WebSocketClient_TextMessage(data.toString()); + + client.__grenStreamController.enqueue(msg); + + // If the readable buffer is full, pause the socket so the remote + // peer stops sending. The pull callback above resumes it when the + // consumer drains the queue. + if (client.__grenStreamController.desiredSize <= 0) { + if (client._socket) { + client._socket.pause(); + } + } + }); + + client.on("close", function (code, reason) { + // Close/error the streams so active readers/writers observe the end. + if (!client.__grenStreamClosed) { + client.__grenStreamClosed = true; + try { + client.__grenStreamController.close(); + } catch (e) { + // Controller may already be closed or errored; safe to ignore. + } + try { + client.__grenWritableController.error("WebSocket connection closed"); + } catch (e) { + // Controller may already be closed or errored; safe to ignore. + } + } + + var handlers = connection.__grenCloseHandlers; + for (var i = 0; i < handlers.length; i++) { + __Scheduler_rawSpawn( + A2( + __Platform_sendToApp, + handlers[i].router, + handlers[i].handler({ + __$code: code, + __$reason: reason.toString(), + }), + ), + ); + } + }); + + client.on("error", function (err) { + if (!opened) { + // Connection attempt failed. + safeCallback( + __Scheduler_fail( + __WebSocketClient_ConnectError({ + __$code: err.code || "", + __$message: err.message || "", + }), + ), + ); + } else { + // Connection errored after opening. Error the streams so active + // readers/writers stop. The subsequent "close" event will notify + // onClose handlers. + if (!client.__grenStreamClosed) { + client.__grenStreamClosed = true; + try { + client.__grenStreamController.error(err.message); + } catch (e) { + // Controller may already be closed or errored; safe to ignore. + } + try { + client.__grenWritableController.error(err.message); + } catch (e) { + // Controller may already be closed or errored; safe to ignore. + } + } + } + }); + }); +}); + +// HANDLER MANAGEMENT + +var _WebSocketClient_clearHandlers = function (connection) { + connection.__grenCloseHandlers = []; +}; + +var _WebSocketClient_setCloseHandler = F3( + function (connection, router, handler) { + connection.__grenCloseHandlers.push({ router: router, handler: handler }); + }, +); + +// ACCESSORS + +var _WebSocketClient_getConnectionId = function (connection) { + return connection.__$id; +}; + +var _WebSocketClient_getReadable = function (connection) { + return connection.__$readable; +}; + +var _WebSocketClient_getWritable = function (connection) { + return connection.__$writable; +}; + +// CLOSING + +function _WebSocketClient_constructError(err) { + return __WsConn_Error({ + __$code: err.code || "", + __$message: err.message || "", + }); +} + +var _WebSocketClient_close = F3(function (connection, code, reason) { + return __Scheduler_binding(function (callback) { + try { + connection.__$client.close(code, reason); + callback(__Scheduler_succeed({})); + } catch (e) { + callback(__Scheduler_fail(_WebSocketClient_constructError(e))); + } + }); +}); diff --git a/src/Gren/Kernel/WebSocketServer.js b/src/Gren/Kernel/WebSocketServer.js index 6ecad25..2fbdf78 100644 --- a/src/Gren/Kernel/WebSocketServer.js +++ b/src/Gren/Kernel/WebSocketServer.js @@ -7,27 +7,30 @@ import Platform exposing (sendToApp) */ -var _WebSocketServer_createServer = F2(function (host, port) { - return __Scheduler_binding(function (callback) { - var WebSocket = require("ws"); - var server = new WebSocket.Server({ host: host, port: port }); - - server.on("error", function (e) { - callback( - __Scheduler_fail( - __WebSocketServer_ServerError({ - __$code: e.code || "UNKNOWN", - __$message: e.message, - }), - ), - ); - }); +var _WebSocketServer_createServer = F3( + function (host, port, readBufferCapacity) { + return __Scheduler_binding(function (callback) { + var WebSocket = require("ws"); + var server = new WebSocket.Server({ host: host, port: port }); + server.__grenReadBufferCapacity = readBufferCapacity; + + server.on("error", function (e) { + callback( + __Scheduler_fail( + __WebSocketServer_ServerError({ + __$code: e.code || "UNKNOWN", + __$message: e.message, + }), + ), + ); + }); - server.on("listening", function () { - callback(__Scheduler_succeed(server)); + server.on("listening", function () { + callback(__Scheduler_succeed(server)); + }); }); - }); -}); + }, +); var _WebSocketServer_nextConnectionId = 0; @@ -51,12 +54,26 @@ function _WebSocketServer_ensureListenersAttached(server) { // closures below can enqueue messages and close/error the stream when the // connection ends. The stream is exposed to the app via // WebSocketServer.Connection.readable, and read using the Stream module. + // + // Backpressure: the stream uses a CountQueuingStrategy with a configurable + // highWaterMark (readBufferCapacity). When the queue fills up, the socket + // is paused so the remote peer stops sending. The pull callback resumes + // the socket when the consumer drains the queue below the capacity. + var bufferCapacity = server.__grenReadBufferCapacity; client.__grenStreamClosed = false; - var messageStream = new ReadableStream({ - start: function (controller) { - client.__grenStreamController = controller; + var messageStream = new ReadableStream( + { + start: function (controller) { + client.__grenStreamController = controller; + }, + pull: function () { + if (client._socket) { + client._socket.resume(); + } + }, }, - }); + new CountQueuingStrategy({ highWaterMark: bufferCapacity }), + ); var connection = { __$id: connId, @@ -91,6 +108,15 @@ function _WebSocketServer_ensureListenersAttached(server) { : __WebSocketServer_TextMessage(data.toString()); client.__grenStreamController.enqueue(msg); + + // If the readable buffer is full, pause the socket so the remote + // peer stops sending. The pull callback above resumes it when the + // consumer drains the queue. + if (client.__grenStreamController.desiredSize <= 0) { + if (client._socket) { + client._socket.pause(); + } + } }); client.on("close", function (code, reason) { diff --git a/src/WebSocketClient.gren b/src/WebSocketClient.gren new file mode 100644 index 0000000..cb5c721 --- /dev/null +++ b/src/WebSocketClient.gren @@ -0,0 +1,245 @@ +effect module WebSocketClient where { subscription = ClientSubscription } exposing (CloseReason, ConnectError(..), Connection, Message(..), Option(..), Permission, connect, connectionId, initialize, onClose) + +{-| Connect to WebSocket servers and exchange messages. + +You write your client using The Gren Architecture by connecting to a server, +reading incoming messages via a [Readable](Stream#Readable) stream and sending +outgoing messages via a [Writable](Stream#Writable) stream from +[WebSocketClient.Connection](WebSocketClient-Connection). + +## Initialization + +@docs Permission, initialize, Option + +## Connecting + +@docs ConnectError, Connection, connectionId, connect + +## Message Types + +@docs Message, CloseReason + +## Events + +@docs onClose +-} + +import Array exposing (Array) +import Bytes exposing (Bytes) +import Gren.Kernel.WebSocketClient +import Init +import Internal.Init +import Task exposing (Task) + + + +-- INITIALIZATION + + +{-| The permission to create a WebSocket client [Connection](WebSocketClient-Connection). + +You get this from [`initialize`](WebSocketClient-Connection#initialize). +-} +type Permission + = Permission + + +{-| Initialize the [`WebSocketClient`](WebSocketClient) module and get permission to connect. +-} +initialize : Init.Task Permission +initialize = + Task.succeed Permission + |> Internal.Init.Task + + +{-| Error code and message from a failed connection attempt. +-} +type ConnectError + = ConnectError { code : String, message : String } + + +{-| Optional configuration for [`connect`](#connect). + +Pass an empty list to use defaults for everything: + + WebSocketClient.connect permission + { url = "ws://localhost:8080" + , options = [] + } + +-} +type Option + = ReadBufferCapacity Int + + +defaultReadBufferCapacity : Int +defaultReadBufferCapacity = + 16 + + +readBufferCapacity : Array Option -> Int +readBufferCapacity options = + options + |> Array.foldl + (\opt maybeCapacity -> + when maybeCapacity is + Just _ -> + maybeCapacity + + Nothing -> + when opt is + ReadBufferCapacity n -> + Just n + ) + Nothing + |> Maybe.withDefault defaultReadBufferCapacity + + + +-- CONNECTIONS + + +{-| An opaque handle representing a WebSocket client connection. + +Use [`WebSocketClient.Connection.readable`](WebSocketClient-Connection#readable) +to read incoming messages and +[`WebSocketClient.Connection.writable`](WebSocketClient-Connection#writable) +to send outgoing messages. +-} +type Connection + = -- Note: Actual implementation in Kernel code. Backed by a JS object with __$id, __$client, __$readable, and __$writable fields. + Connection + + +{-| Get a comparable identifier for a connection. + +Useful for storing connections in a `Dict Int Connection`. +-} +connectionId : Connection -> Int +connectionId conn = + Gren.Kernel.WebSocketClient.getConnectionId conn + + +{-| Task to connect to a WebSocket server. + + WebSocketClient.connect permission + { url = "ws://localhost:8080" + , options = [] + } + |> Task.attempt Connected + +Use [`Option`](#Option) values to customize behavior. For example, +[`ReadBufferCapacity`](#Option) controls how many unread messages are buffered +before backpressure is applied to the remote peer: + + WebSocketClient.connect permission + { url = "ws://localhost:8080" + , options = [ WebSocketClient.ReadBufferCapacity 4 ] + } + +-} +connect : Permission -> { url : String, options : Array Option } -> Task ConnectError Connection +connect _ options = + Gren.Kernel.WebSocketClient.connect options.url (readBufferCapacity options.options) + + + +-- MESSAGE TYPES + + +{-| A message sent or received over a WebSocket connection. +-} +type Message + = TextMessage String + | BinaryMessage Bytes + + +{-| The reason a WebSocket connection was closed. +-} +type alias CloseReason = + { code : Int + , reason : String + } + + + +-- SUBSCRIPTIONS + + +{-| Subscribe to connection close events. + +Provides the close code and reason. Close can also be observed as +`Stream.Closed` when reading from +[`WebSocketClient.Connection.readable`](WebSocketClient-Connection#readable), +but this subscription gives access to the close details. + + WebSocketClient.onClose connection Closed + +-} +onClose : Connection -> (CloseReason -> msg) -> Sub msg +onClose connection handler = + subscription (OnCloseSub { connection = connection, handler = handler }) + + + +-- EFFECT STUFF + + +type ClientSubscription msg + = OnCloseSub { connection : Connection, handler : CloseReason -> msg } + + +subMap : (a -> b) -> ClientSubscription a -> ClientSubscription b +subMap fn sub = + when sub is + OnCloseSub { connection, handler } -> + OnCloseSub + { connection = connection + , handler = handler >> fn + } + + +type alias State msg = + Array (ClientSubscription msg) + + +init : Task Never (State msg) +init = + Task.succeed [] + + +onEffects : + Platform.Router msg SelfMsg + -> Array (ClientSubscription msg) + -> State msg + -> Task Never (State msg) +onEffects router subs state = + let + _clearOldHandlers = + state + |> Array.map + (\sub -> + when sub is + OnCloseSub { connection } -> + Gren.Kernel.WebSocketClient.clearHandlers connection + ) + + _setNewHandlers = + subs + |> Array.map + (\sub -> + when sub is + OnCloseSub { connection, handler } -> + Gren.Kernel.WebSocketClient.setCloseHandler connection router handler + ) + in + Task.succeed subs + + +type SelfMsg + = Never + + +onSelfMsg : Platform.Router msg SelfMsg -> SelfMsg -> State msg -> Task Never (State msg) +onSelfMsg _ _ state = + Task.succeed state diff --git a/src/WebSocketClient/Connection.gren b/src/WebSocketClient/Connection.gren new file mode 100644 index 0000000..fc262c0 --- /dev/null +++ b/src/WebSocketClient/Connection.gren @@ -0,0 +1,167 @@ +module WebSocketClient.Connection exposing (Error, close, errorCode, errorIsBrokenPipe, errorIsConnectionNotOpen, errorIsConnectionReset, errorIsInvalidCloseCode, errorIsCloseReasonTooLong, errorToString, readable, writable) + +{-| Read from, write to, and close WebSocket client connections. + +These operations return Tasks that can fail if the connection is no longer +open or if a network error occurs. This lets your application detect and +handle failures explicitly. + +## Reading + +@docs readable + +## Writing + +@docs writable + +## Closing + +@docs close + +## Errors + +@docs Error, errorCode, errorToString, errorIsConnectionNotOpen, errorIsConnectionReset, errorIsBrokenPipe, errorIsInvalidCloseCode, errorIsCloseReasonTooLong +-} + +import Gren.Kernel.WebSocketClient +import Stream exposing (Readable, Writable) +import Task exposing (Task) +import WebSocketClient exposing (Connection, Message) + + + +-- READING + + +{-| The stream of incoming messages for a connection. + +Read messages from it using the [`Stream`](Stream) module, for example +[`Stream.read`](Stream#read) or +[`Stream.readUntilClosed`](Stream#readUntilClosed). The stream closes when the +connection closes, and errors if the connection errors (observed as +`Stream.Cancelled`). + + WebSocketClient.Connection.readable connection + |> Stream.read + |> Task.attempt ReadResult + +-} +readable : Connection -> Readable Message +readable connection = + Gren.Kernel.WebSocketClient.getReadable connection + + + +-- WRITING + + +{-| The stream for sending outgoing messages on a connection. + +Write messages to it using the [`Stream`](Stream) module, for example +[`Stream.write`](Stream#write). A write resolves once the data has been +flushed to the underlying socket. + + WebSocketClient.Connection.writable connection + |> Stream.write (WebSocketClient.TextMessage "Hello!") + |> Task.attempt WriteResult + +The stream errors (observed as `Stream.Cancelled`) if the connection is no +longer open when a write is attempted. + +-} +writable : Connection -> Writable Message +writable connection = + Gren.Kernel.WebSocketClient.getWritable connection + + + +-- CLOSING + + +{-| Close a connection with a status code and reason string. + + WebSocketClient.Connection.close connection 1000 "Normal closure" + |> Task.attempt ConnectionClosed + +Valid close codes are 1000-1003, 1007-1014, and 3000-4999. +The reason string must not exceed 123 bytes. +-} +close : Connection -> Int -> String -> Task Error {} +close connection code reason = + Gren.Kernel.WebSocketClient.close connection code reason + + + +-- ERRORS + + +{-| An error from a WebSocket connection operation. + +Use the `errorIs*` helper functions to check for specific error conditions, +or [`errorToString`](#errorToString) for a human-readable description. +-} +type Error + = Error { code : String, message : String } + + +{-| Get the error code, if one is available. + +Network-level errors from the operating system will have a code like +`"EPIPE"` or `"ECONNRESET"`. Errors originating from the WebSocket library +itself (such as sending on a closed connection) do not have error codes and +will return an empty string. +-} +errorCode : Error -> String +errorCode (Error { code }) = + code + + +{-| Get a human-readable description of the error. +-} +errorToString : Error -> String +errorToString (Error { message }) = + message + + +{-| If `True`, the operation failed because the WebSocket connection is not +in the open state. This is the most common error and typically occurs when +a message or close frame races with the connection closing. +-} +errorIsConnectionNotOpen : Error -> Bool +errorIsConnectionNotOpen (Error { message }) = + String.startsWith "WebSocket is not open" message + + +{-| If `True`, the connection was reset by the remote peer. +-} +errorIsConnectionReset : Error -> Bool +errorIsConnectionReset (Error { code }) = + code == "ECONNRESET" + + +{-| If `True`, the write failed because the connection has been closed. + +This is a system-level error that can occur when the underlying TCP socket +is closed while a write is in progress. +-} +errorIsBrokenPipe : Error -> Bool +errorIsBrokenPipe (Error { code }) = + code == "EPIPE" || code == "ERR_STREAM_DESTROYED" + + +{-| If `True`, [`close`](#close) was called with an invalid status code. + +Valid WebSocket close codes are: 1000-1003, 1007-1014, and 3000-4999. +Codes 1004, 1005, and 1006 are reserved and cannot be sent. +-} +errorIsInvalidCloseCode : Error -> Bool +errorIsInvalidCloseCode (Error { message }) = + String.startsWith "First argument must be a valid error code" message + + +{-| If `True`, [`close`](#close) was called with a reason string that exceeds +the WebSocket protocol limit of 123 bytes. +-} +errorIsCloseReasonTooLong : Error -> Bool +errorIsCloseReasonTooLong (Error { message }) = + String.startsWith "The message must not be greater than 123 bytes" message diff --git a/src/WebSocketServer.gren b/src/WebSocketServer.gren index e67fa23..044bc53 100644 --- a/src/WebSocketServer.gren +++ b/src/WebSocketServer.gren @@ -1,4 +1,4 @@ -effect module WebSocketServer where { subscription = WebSocketSubscription } exposing (CloseReason, Connection, Message(..), Permission, Server, ServerError(..), connectionId, createServer, initialize, onClose, onConnection) +effect module WebSocketServer where { subscription = WebSocketSubscription } exposing (CloseReason, Connection, Message(..), Option(..), Permission, Server, ServerError(..), connectionId, createServer, initialize, onClose, onConnection) {-| Create a WebSocket server that can accept connections and exchange messages. @@ -7,7 +7,7 @@ and message events and responding with commands via [WebSocketServer.Connection] ## Initialization -@docs Permission, Server, ServerError, initialize, createServer +@docs Permission, Server, ServerError, initialize, createServer, Option ## Connections @@ -22,6 +22,7 @@ and message events and responding with commands via [WebSocketServer.Connection] @docs Message, CloseReason -} +import Array exposing (Array) import Bytes exposing (Bytes) import Gren.Kernel.WebSocketServer import Init @@ -63,15 +64,67 @@ initialize = |> Internal.Init.Task +{-| Optional configuration for [`createServer`](#createServer). + +Pass an empty list to use defaults for everything: + + WebSocketServer.createServer permission + { host = "0.0.0.0" + , port_ = 8080 + , options = [] + } + +-} +type Option + = ReadBufferCapacity Int + + +defaultReadBufferCapacity : Int +defaultReadBufferCapacity = + 16 + + +readBufferCapacity : Array Option -> Int +readBufferCapacity options = + options + |> Array.foldl + (\opt maybeCapacity -> + when maybeCapacity is + Just _ -> + maybeCapacity + + Nothing -> + when opt is + ReadBufferCapacity n -> + Just n + ) + Nothing + |> Maybe.withDefault defaultReadBufferCapacity + + {-| Task to create a WebSocket server. - WebSocketServer.createServer permission { host = "0.0.0.0", port_ = 8080 } + WebSocketServer.createServer permission + { host = "0.0.0.0" + , port_ = 8080 + , options = [] + } |> Task.attempt ServerCreated +Use [`Option`](#Option) values to customize behavior. For example, +[`ReadBufferCapacity`](#Option) controls how many unread messages are buffered +per connection before backpressure is applied to the remote peer: + + WebSocketServer.createServer permission + { host = "0.0.0.0" + , port_ = 8080 + , options = [ WebSocketServer.ReadBufferCapacity 4 ] + } + -} -createServer : Permission -> { host : String, port_ : Int } -> Task ServerError Server +createServer : Permission -> { host : String, port_ : Int, options : Array Option } -> Task ServerError Server createServer _ options = - Gren.Kernel.WebSocketServer.createServer options.host options.port_ + Gren.Kernel.WebSocketServer.createServer options.host options.port_ (readBufferCapacity options.options)