Note! Unreleased development branch. Track progress & issues here. Checkout v0.14 for something stable.
uWS::SSLApp({ /* There are tons of SSL options */ .cert_file_name = "cert.pem", .key_file_name = "key.pem" }).onGet("/", [](auto *res, auto *req) { /* Respond with the web app on default route */ res->writeStatus("200 OK") ->writeHeader("Content-Type", "text/html; charset=utf-8") ->end(indexHtmlBuffer); }).onWebSocket<UserData>("/ws/chat", [&](auto *ws, auto *req) { /* Subscribe to topic /chat */ ws->subscribe("chat"); }).onMessage([&](auto *ws, auto message, auto opCode) { /* Parse incoming message according to some protocol & publish it */ if (seemsReasonable(message)) { ws->publish("chat", message); } else { ws->close(); } }).onClose([&](auto *ws, int code, auto message) { /* Remove websocket from this topic */ ws->unsubscribe("chat"); }).listen("localhost", 3000, 0).run();A free & open source (Zlib) project since 2016. Kindly sponsored by BitMEX, Bitfinex & Coinbase in 2018.
Become a paying sponsor to unlock support, issue reporting, roadmaps and to drop suggestions.
Commercial support is available via a per-hourly consulting plan or as otherwise negotiated. If you're stuck, worried about design or just in need of help don't hesitate throwing me, the author a mail and we'll figure out what's best for both parties. I want your business to have a proper understanding of the problem before rushing in to one of the many pitfalls.
All that glitters is not gold. Especially so in a market driven by flashy logos, hype and pointless badges.
| Http | WebSockets |
|---|---|
![]() | ![]() |



