Skip to content

Instantly share code, notes, and snippets.

@mubaidr
Forked from atinux/sse.ts
Created January 12, 2024 09:58
Show Gist options
  • Select an option

  • Save mubaidr/6097b16e91985c05e240094e5245fd05 to your computer and use it in GitHub Desktop.

Select an option

Save mubaidr/6097b16e91985c05e240094e5245fd05 to your computer and use it in GitHub Desktop.

Revisions

  1. @atinux atinux revised this gist Jul 3, 2023. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions sse.ts
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,6 @@ export default defineEventHandler(async (event) => {

    myHooks.hook('sse:event', sendEvent)

    await new Promise((resolve) => {
    // Wait forever
    })
    // Let the connection opened
    event._handled = true;
    })
  2. @atinux atinux revised this gist Apr 21, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion sse.ts
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    // server/api/sse.ts
    // ~/server/api/sse.ts
    export default defineEventHandler(async (event) => {
    if (!process.dev) return { disabled: true }

  3. @atinux atinux created this gist Apr 10, 2023.
    23 changes: 23 additions & 0 deletions sse.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,23 @@
    // 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)

    await new Promise((resolve) => {
    // Wait forever
    })
    })