mirror of
https://github.com/actix/examples
synced 2024-12-05 03:01:55 +01:00
.. | ||
src | ||
benchmark.js | ||
Cargo.toml | ||
drain.js | ||
README.md |
actix-sse
Example of server-sent events, aka EventSource
, with actix web.
cd server-sent-events
cargo run
Open http://127.0.0.1:8080/ with a browser, then send events with another HTTP client:
curl -X POST 127.0.0.1:8080/broadcast/my_message
my_message should appear in the browser with a timestamp.
Performance
This implementation can serve thousands of clients on a 2021 MacBook with no problems.
Run node ./benchmark.js
to benchmark your own system:
$ node benchmark.js
Connected: 1000, connection time: 201 ms, total broadcast time: 20 ms^C⏎
Error Too many open files
You may be limited to a maximal number of connections (open file descriptors). Setting maximum number of open file descriptors to 2048:
ulimit -n 2048
Test maximum number of open connections with node ./drain.js
:
$ node drain.js
Connections dropped: 10450, accepting connections: false^C⏎
Accepting connections indicates whether resources for the server have been exhausted.