uwebsockets
Version:
Fastest uWebSockets server for Node.js – µWebSockets outperforms Socket.IO & Fastify. Built in C++ for high-performance networking & pub/sub.
57 lines (49 loc) • 1.53 kB
JavaScript
const uWS = require("uwebsockets");
const port = 9001;
const wsc = require("ws");
const app = uWS
.App()
.ws("/*", {
/* Options */
maxPayloadLength: 16 * 1024 * 1024,
idleTimeout: 10,
maxBackpressure: 1024,
closeOnBackpressureLimit: true /* Enable or disable as needed */,
/* Handlers */
open: (ws) => {
console.log("Client connected");
ws.subscribe("clock_feed");
/* Disable closeOnBackpressureLimit and see this lie around 1024 */
ws.clock = setInterval(() => {
console.log(
"Connected socket has " + ws.getBufferedAmount() + " bytes buffered"
);
}, 1000);
},
close: (ws, code, message) => {
clearInterval(ws.clock);
console.log("Client disconnected: " + code + ", " + message);
/* The library guarantees proper unsubscription at close */
},
})
.listen(port, (listenSocket) => {
if (listenSocket) {
console.log("Listening to port " + port);
} else {
console.log("Failed to listen to port " + port);
}
});
/* Publish the time as fast as possible in a loop */
function sendTime() {
app.publish("clock_feed", Date.now().toString());
setImmediate(sendTime);
}
sendTime();
/* Make a connection to the server */
const ws = new wsc.WebSocket("ws://localhost:9001");
ws.on("message", function message(data) {
console.log("received: %s", data);
/* If we pause receive, we will become slow receiver */
console.log("Will become slow receiver");
ws._socket.pause();
});