Par

Module WebSocket

WebSocket message streams and client connections.

type WebSocket.Error = String

Error type for WebSocket operations (a human-readable message).

type WebSocket.Message = either {
  .binary Bytes,
  .text String,
}

A complete WebSocket data message.

type WebSocket.Reader = recursive choice {
  .close* => Try<WebSocket.Error, !>,
  .read => Try<WebSocket.Error, either {
    .end!,
    .message(WebSocket.Message) self,
  }>,
}

The incoming side of a WebSocket connection.

  • .close — stop receiving messages.
  • .read — read the next message. Returns .end when a WebSocket close frame is received. Connection and protocol failures return .err.
type WebSocket.Writer = iterative choice {
  .close* => Try<WebSocket.Error, !>,
  .send(WebSocket.Message) => Try<WebSocket.Error, self>,
}

The outgoing side of a WebSocket connection.

  • .close — initiate the closing handshake with status code 1000 (normal closure) and an empty reason.
  • .send(message) — send one text or binary message.