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.
Layers
layerClient
Signature
declare const layerClient: Layer.Layer<
Sharding.Sharding | Runners.Runners,
never,
| ShardingConfig.ShardingConfig
| Runners.RpcClientProtocol
| MessageStorage
| RunnerStorage
| RunnerHealth
>;layerClientProtocolHttp
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>;layerClientProtocolHttpDefault
Default HTTP runner client protocol layer using path /.
Signature
declare const layerClientProtocolHttpDefault: Layer.Layer<
Runners.RpcClientProtocol,
never,
RpcSerialization.RpcSerialization | HttpClient.HttpClient
>;layerClientProtocolWebsocket
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>;layerClientProtocolWebsocketDefault
Default WebSocket runner client protocol layer using path /.
Signature
declare const layerClientProtocolWebsocketDefault: Layer.Layer<
Runners.RpcClientProtocol,
never,
RpcSerialization.RpcSerialization | Socket.WebSocketConstructor
>;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
>;layerHttpClientOnly
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
>;layerHttpOptions
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
>;layerWebsocket
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
>;layerWebsocketClientOnly
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
>;layerWebsocketOptions
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
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
>;toHttpEffectWebsocket
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
>;
Layer that provides
ShardingandRunnersusing the configured runner RPC client protocol and storage services.