UNPKG

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
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(); });