uwebsockets
v2.2.2
Published
µWebSockets.js is a web server bypass for Node.js that reimplements eventing, networking, encryption, web protocols, routing and pub/sub in highly optimized C++. As such, µWebSockets.js (websockets) delivers web serving for Node.js, 8.5x that of Fastify a
Downloads
450
Maintainers
Readme
:zap: Simple performance
µWebSockets.js is a web server bypass for Node.js that reimplements eventing, networking, encryption, web protocols, routing and pub/sub in highly optimized C++. As such, µWebSockets.js delivers web serving for Node.js, 8.5x that of Fastify and at least 10x that of Socket.IO. It is also the built-in web server of Bun.
- Browse the documentation and see the main repo. There are tons of examples but here's the gist of it all:
/* Non-SSL is simply App() */
require("uWebSockets.js")
.SSLApp({
/* There are more SSL options, cut for brevity */
key_file_name: "misc/key.pem",
cert_file_name: "misc/cert.pem",
})
.ws("/*", {
/* There are many common helper features */
idleTimeout: 32,
maxBackpressure: 1024,
maxPayloadLength: 512,
compression: DEDICATED_COMPRESSOR_3KB,
/* For brevity we skip the other events (upgrade, open, ping, pong, close) */
message: (ws, message, isBinary) => {
/* You can do app.publish('sensors/home/temperature', '22C') kind of pub/sub as well */
/* Here we echo the message back, using compression if available */
let ok = ws.send(message, isBinary, true);
},
})
.get("/*", (res, req) => {
/* It does Http as well */
res
.writeStatus("200 OK")
.writeHeader("IsExample", "Yes")
.end("Hello there!");
})
.listen(9001, (listenSocket) => {
if (listenSocket) {
console.log("Listening to port 9001");
}
});