Skip to content

Instantly share code, notes, and snippets.

@armenr
Forked from Atinux/sse.ts
Created January 12, 2024 16:41
Show Gist options
  • Save armenr/a677e0c9b3e4a27d4f2b5184e5dc0a3f to your computer and use it in GitHub Desktop.
Save armenr/a677e0c9b3e4a27d4f2b5184e5dc0a3f to your computer and use it in GitHub Desktop.
SSE endpoint example with Nuxt 3
// ~/server/api/sse.ts
export default defineEventHandler(async (event) => {
if (!process.dev) return { disabled: true }
// Enable SSE endpoint
setHeader(event, 'cache-control', 'no-cache')
setHeader(event, 'connection', 'keep-alive')
setHeader(event, 'content-type', 'text/event-stream')
setResponseStatus(event, 200)
let counter = 0
const sendEvent = (data: any) => {
event.node.res.write(`id: ${++counter}\n`);
event.node.res.write(`data: ${JSON.stringify(data)}\n\n`);
}
myHooks.hook('sse:event', sendEvent)
// Let the connection opened
event._handled = true;
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment