redis
redis copied to clipboard
Support AbortController in a client
Currently it is not possible pass AbortController signal to a client. It would be immensely useful to support that in streaming HTTP handlers.
Example:
http.serve(async (req: Request) => {
const redis = await connect({ hostname: "127.0.0.1", signal: req.signal })
const events = new http.ServerSentEventStreamTarget({ keepAlive: true })
while (true) {
const [stream] = await redis.xread([
{ key: `worker:${id}:events`, xid: "*" },
])
// Send events from a stream.
}
return events.asResponse()
})
Current solution:
const redis = await connect({
hostname: "127.0.0.1",
})
req.signal.addEventListener("abort", () => {
redis.close()
})