Node.js gestisce le richieste simultanee utilizzando un modello di programmazione basato su eventi e I/O non bloccante. Diversamente dai tradizionali server multithread, dove ogni richiesta genera un nuovo thread o occupa un thread da un pool di thread, Node.js esegue su un singolo thread, utilizzando il ciclo degli eventi e le callback per gestire molte connessioni simultanee.
Quando un’operazione I/O è necessaria (come una lettura dalla rete, un accesso al database o una lettura del filesystem), Node.js mette tale operazione in una coda e continua con l’esecuzione del codice successivo. Quando l’operazione I/O è completa, la callback associata viene inserita nella coda degli eventi per essere eseguita.
Questo approccio permette a Node.js di gestire un alto numero di connessioni simultanee con un basso overhead, rendendolo molto adatto per gli ambienti server web in tempo reale, guadagnandogli il soprannome di “server delle richieste simultanee”.