hapijs / hapijs/hapi

A hapijs server sent event (SSE) example

Open
#4,521 6 comments 1 reaction 0 assignees View on GitHub
documentation
Dominant language
JavaScript
Stars
14.8k
Forks
1.4k
Avg merge
22d 3h
Merged PRs (30d)
1

Description

### Module version

21.3.10

### What documentation problem did you notice?

There is no hapijs SSE example. I recently figured it out but don't know where to put it. So I have it here:

```typescript
'use strict';

const Hapi = require('@hapi/hapi');

const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});

// Route using raw.res for direct response handling
server.route({
method: 'GET',
path: '/sse',
handler: async (request, h) => {
const res = request.raw.res;
res.writeHead(200, { "Content-Type": "application/json" });

const intervalId = setInterval(() => {
res.write('this is a server sent event message');
}, 1000); // send a message every 1 second
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
await sleep(10000); // mock a long running request handling

res.end('This is a raw response using raw.res');
return h.abandon; // Abandon Hapi's normal response flow because we used raw response
}
});

await server.start();
console.log('Server running on %s', server.info.uri);
};

process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});

init();
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.