Skip to main content
Version: v8.0.0

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"

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
NameTypeDescription
strategy
DeliveryStrategyType<Input, Output, Extra>

Returns​

type DeliveryStrategyType<Input,Output,Extra> = (context: DeliveryStrategyContextType<Output, Extra>) => DeliveryControllerType<Input, Extra>;
DeliveryStrategyType<Input, Output, Extra>