Skip to content

HttpRunner

Connects cluster runner RPCs to HTTP and WebSocket transports.

Runner nodes communicate through the Runners.Rpcs protocol. This module provides client protocol layers for dialing runner addresses over HTTP or WebSocket, HTTP effects that serve runner RPC handlers, route layers for installing runner endpoints into an HttpRouter, and ready-made layers for HTTP or WebSocket runner communication.

13 exports Added in v4.0.0 Source

Layers

layerClient

Added in v4.0.0 Source

Layer that provides Sharding and Runners using the configured runner RPC client protocol and storage services.

Signature

declare const layerClient: Layer.Layer<
  Sharding.Sharding | Runners.Runners,
  never,
  | ShardingConfig.ShardingConfig
  | Runners.RpcClientProtocol
  | MessageStorage
  | RunnerStorage
  | RunnerHealth
>;

Provides a runner RPC client protocol that connects to runner addresses over HTTP.

Details

The configured path is appended to each runner address, and https switches the generated URL from http to https.

Signature

declare function layerClientProtocolHttp(options: {
  readonly https?: boolean;
  readonly path: string;
}): Layer<RpcClientProtocol, never, RpcSerialization | HttpClient>;

Default HTTP runner client protocol layer using path /.

Signature

declare const layerClientProtocolHttpDefault: Layer.Layer<
  Runners.RpcClientProtocol,
  never,
  RpcSerialization.RpcSerialization | HttpClient.HttpClient
>;

Provides a runner RPC client protocol that connects to runner addresses over WebSocket.

Details

The configured path is appended to each runner address, and https switches the generated URL from ws to wss.

Signature

declare function layerClientProtocolWebsocket(options: {
  readonly https?: boolean;
  readonly path: string;
}): Layer<RpcClientProtocol, never, RpcSerialization | WebSocketConstructor>;

Default WebSocket runner client protocol layer using path /.

Signature

declare const layerClientProtocolWebsocketDefault: Layer.Layer<
  Runners.RpcClientProtocol,
  never,
  RpcSerialization.RpcSerialization | Socket.WebSocketConstructor
>;

layerHttp

Added in v4.0.0 Source

Layer that serves runner routes at / and configures HTTP runner clients.

Details

It serves runner routes at / and configures runner clients to communicate over HTTP.

Signature

declare const layerHttp: Layer.Layer<
  Sharding.Sharding | Runners.Runners,
  never,
  | RpcSerialization.RpcSerialization
  | ShardingConfig.ShardingConfig
  | HttpClient.HttpClient
  | HttpServer.HttpServer
  | MessageStorage
  | RunnerStorage
  | RunnerHealth
>;

Provides a client-only HTTP runner layer.

When to use

Use to provide runner clients over HTTP from a process that should not serve runner routes.

Details

It configures runner clients to communicate over HTTP without serving runner HTTP routes.

Signature

declare const layerHttpClientOnly: Layer.Layer<
  Sharding.Sharding | Runners.Runners,
  never,
  | RpcSerialization.RpcSerialization
  | ShardingConfig.ShardingConfig
  | HttpClient.HttpClient
  | MessageStorage
  | RunnerStorage
>;

Layer that adds HTTP runner routes to the provided HttpRouter.

Signature

declare function layerHttpOptions(options: {
  readonly path: PathInput;
}): Layer<
  Sharding | Runners,
  never,
  | HttpRouter
  | MessageStorage
  | ShardingConfig
  | RpcClientProtocol
  | RpcSerialization
  | RunnerStorage
  | RunnerHealth
>;

Layer that serves runner routes at / and configures WebSocket runner clients.

Details

It serves runner routes at / and configures runner clients to communicate over WebSocket.

Signature

declare const layerWebsocket: Layer.Layer<
  Sharding.Sharding | Runners.Runners,
  never,
  | RpcSerialization.RpcSerialization
  | ShardingConfig.ShardingConfig
  | Socket.WebSocketConstructor
  | HttpServer.HttpServer
  | MessageStorage
  | RunnerStorage
  | RunnerHealth
>;

Provides a client-only WebSocket runner layer.

When to use

Use to provide runner clients over WebSocket from a process that should not serve runner routes.

Details

It configures runner clients to communicate over WebSocket without serving runner WebSocket routes.

Signature

declare const layerWebsocketClientOnly: Layer.Layer<
  Sharding.Sharding | Runners.Runners,
  never,
  | ShardingConfig.ShardingConfig
  | MessageStorage
  | RunnerStorage
  | RpcSerialization.RpcSerialization
  | Socket.WebSocketConstructor
>;

Layer that adds WebSocket runner routes to the provided HttpRouter.

Signature

declare function layerWebsocketOptions(options: {
  readonly path: PathInput;
}): Layer<
  Sharding | Runners,
  never,
  | HttpRouter
  | MessageStorage
  | ShardingConfig
  | RpcClientProtocol
  | RpcSerialization
  | RunnerStorage
  | RunnerHealth
>;

Running

toHttpEffect

Added in v4.0.0 Source

Builds an HTTP effect that serves runner RPCs over the HTTP protocol.

Details

The returned effect is produced from RunnerServer.layerHandlers and the cluster runner RPC group.

Signature

declare const toHttpEffect: Effect.Effect<
  Effect.Effect<HttpServerResponse, never, Scope | HttpServerRequest>,
  never,
  Scope | RpcSerialization.RpcSerialization | Sharding.Sharding | MessageStorage
>;

Builds an HTTP effect that serves runner RPCs over WebSocket.

Details

The returned effect is produced from RunnerServer.layerHandlers and the cluster runner RPC group.

Signature

declare const toHttpEffectWebsocket: Effect.Effect<
  Effect.Effect<HttpServerResponse, never, Scope | HttpServerRequest>,
  never,
  Scope | RpcSerialization.RpcSerialization | Sharding.Sharding | MessageStorage
>;