Node is one of the best programming languages out there to build real-time applications due to its event-driven and asynchronous nature, messaging and notification delivery are two of the most common use cases for real-time.
WebSocket provides the solution we need. WebSocket is a communication protocol that allows both the client and server to initiate communication.
- Socket.IO - Enables real-time bidirectional event-based communication, consists of a Node server and a Javascript client library for the browser or Node.
- ws - A simple to use, blazing fast, and thoroughly tested WebSocket client and server implementation in Node, does not work in the browser.
- uWebSockets.js - A C++ implementation of the WebSocket/HTTP protocols for Node, easy to use from JavaScript. Think of it as a much faster alternative to both Socket.IO and Fastify/Express.js; it comes with both router and pub/sub support.
- Feathers - A lightweight web-framework for creating real-time applications and REST APIs.