createDeliveryStrategy
Typed identity helper for authoring custom delivery strategies.
Input
is the listener's response type,
Output
is what
listen
callbacks will receive. TypeScript cannot
infer
Output
from how you call
deliver
, so declare it here - the same way
createListener<Response>()
declares the wire type.
Import
import { createDeliveryStrategy } from "@hyper-fetch/sockets"
Source
Package
Usage
const summarize = createDeliveryStrategy<Tick, { count: number; last: Tick }>(({ deliver }) => {
let count = 0;
let last: Tick | undefined;
let timer: ReturnType<typeof setTimeout> | undefined;
return {
push: ({ data, extra }) => {
count += 1;
last = data;
timer ??= setTimeout(() => {
timer = undefined;
deliver({ data: { count, last: last! }, extra });
count = 0;
}, 1000);
},
dispose: () => clearTimeout(timer),
};
});
const onTick = socket.createListener<Tick>()({ topic: "ticks", delivery: summarize });
onTick.listen(({ data }) => data.count); // data: { count: number; last: Tick }
Parameters
createDeliveryStrategy<Input, Output, Extra>(strategy: DeliveryStrategyType<Input, Output, Extra>)
Parameters
| Name | Type | Description |
|---|---|---|
| strategy | |
Returns
type DeliveryStrategyType<Input,Output,Extra> = (context: DeliveryStrategyContextType<Output, Extra>) => DeliveryControllerType<Input, Extra>;
DeliveryStrategyType<Input, Output, Extra>
