# uWebSockets — Simple Secure High-Performance WebSocket and HTTP Server > A C++ library for building extremely fast WebSocket and HTTP servers, powering some of the largest real-time applications on the internet. ## Install Save in your project root: # uWebSockets — Simple Secure High-Performance WebSocket and HTTP Server ## Quick Use ```bash # C++ (vcpkg) vcpkg install uwebsockets # Node.js binding (uWebSockets.js) npm install uWebSockets.js ``` ## Introduction uWebSockets is a C++ library that implements HTTP and WebSocket protocols with a focus on raw throughput and low memory usage. Its Node.js binding, uWebSockets.js, serves as a drop-in high-performance alternative for applications that need to handle millions of concurrent connections. ## What uWebSockets Does - Provides HTTP/1.1 and WebSocket server implementations in optimized C++ - Delivers throughput that can exceed 1 million messages per second on a single core - Offers a Node.js binding (uWebSockets.js) with a familiar API for JS developers - Supports TLS via OpenSSL or BoringSSL for encrypted connections - Handles pub/sub messaging patterns natively for broadcast workloads ## Architecture Overview uWebSockets is built on top of uSockets, a minimal event-loop library written in C. The architecture avoids heap allocations on the hot path and uses epoll/kqueue for non-blocking I/O. WebSocket frames are parsed with zero-copy techniques. The Node.js binding wraps the C++ core via N-API, giving JavaScript applications near-native performance without requiring a full C++ build chain. ## Self-Hosting & Configuration - For C++ projects, install via vcpkg or include as a header-only library - For Node.js, install the prebuilt binary: `npm install uWebSockets.js` - Configure listen options (port, host, SSL certs) when calling the `.listen()` method - Set backpressure limits per WebSocket to control memory usage under load - Deploy behind a reverse proxy (Nginx, Caddy) or use its built-in TLS support directly ## Key Features - One of the fastest HTTP and WebSocket implementations available in any language - Memory footprint measured in bytes per connection, not kilobytes - Built-in pub/sub for topic-based broadcasting without external message brokers - Graceful shutdown and per-socket backpressure management - Standards-compliant with Autobahn test suite passing ## Comparison with Similar Tools - **ws (Node.js)** — pure JS WebSocket library; uWebSockets.js is 10-50x faster - **Socket.IO** — higher-level with fallbacks and rooms; uWebSockets focuses on raw protocol speed - **Boost.Beast** — C++ HTTP/WebSocket on Boost.Asio; uWebSockets has a simpler API and lower overhead - **Bun** — uses a fork of uWebSockets internally for its built-in server ## FAQ **Q: Is uWebSockets.js a drop-in replacement for ws?** A: The API differs slightly, but migration is straightforward. Most patterns map directly. **Q: Does it support HTTP/2?** A: Currently it supports HTTP/1.1 and WebSocket. HTTP/2 is not implemented. **Q: Can I use it in production?** A: Yes. It powers several large-scale real-time applications in production today. **Q: What platforms are supported?** A: Linux, macOS, and Windows. The Node.js binding ships prebuilt binaries for all three. ## Sources - https://github.com/uNetworking/uWebSockets - https://github.com/uNetworking/uWebSockets.js --- Source: https://tokrepo.com/en/workflows/asset-ca6f420b Author: AI Open Source