https://github.com/avoidwork/tiny-eventsource
Tiny EventSource for API servers
https://github.com/avoidwork/tiny-eventsource
Last synced: 6 months ago
JSON representation
Tiny EventSource for API servers
- Host: GitHub
- URL: https://github.com/avoidwork/tiny-eventsource
- Owner: avoidwork
- License: bsd-3-clause
- Created: 2018-11-20T03:01:36.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2025-07-29T16:31:52.000Z (6 months ago)
- Last Synced: 2025-07-29T19:21:24.896Z (6 months ago)
- Language: JavaScript
- Size: 802 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Tiny EventSource
Tiny EventSource simplifies `server-sent` events for API servers.
## Example
### Using the factory
```javascript
import {eventsource} from "tiny-eventsource";
import {STATUS_CODES} from "node:http";
const streams = new Map();
export function stream (req, res) {
if (req.isAuthenticated()) {
const id = req.user.id;
if (!streams.has(id)) {
streams.set(id, eventsource({ms: 2e4}, "connected"));
}
streams.get(id).init(req, res);
} else {
res.statusCode = 401;
res.writeHead(res.statusCode, {headers: {"cache-control": "no-cache, must re-validate"}})
res.end(STATUS_CODES[res.statusCode]);
}
};
```
### Using the Class
```javascript
import {EventSource} from "tiny-eventsource";
```
## Testing
Tiny EventSource has 100% code coverage with its tests.
```console
Testing functionality
✔ It should do nothing with stock configuration
✔ It should have an accurate listener count
✔ It should have a heartbeat (502ms)
✔ It should send custom events
4 passing (508ms)
----------------------|---------|----------|---------|---------|----------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------------------|---------|----------|---------|---------|----------------------
All files | 100 | 72.22 | 100 | 100 |
tiny-eventsource.cjs | 100 | 72.22 | 100 | 100 | 35-36,49,56,66,68-88
----------------------|---------|----------|---------|---------|----------------------
```
## Options
### event
Default is `message`.
### ms
Default is `0`. If greater than 0 a heart beat will be created from `init()`.
### msg
Default is `ping`. Message sent if `ms` is greater than `0`.
## Events
### close
Emitted when an `EventSource` request is closed.
## API
### constructor({options}, [...msgs])
Creates an `EventSource` instance with optional messages to be transmitted on successful connection.
### init(req, res)
Initializes an `Event Source` stream.
### listenerCount()
Returns the number of listeners on the `EventSource` instance.
### send(msg[, event, id]);
Sends a message over an `EventSource` instance.
### setMaxListeners(n)
Sets the maximum listeners on the `EventSource` instance; default is `0`.
## License
Copyright (c) 2023 Jason Mulligan
Licensed under the BSD-3 license.