Jsme Java firma. Ale měli jsme projekt, kde Java nebyla ideální: real-time dashboard s tisíci simultánními WebSocket spojeními. Node.js s event loop modelem škáluje lépe než thread-per-connection.
Event-driven, non-blocking¶
var io = require('socket.io')(server);
io.on('connection', function(socket) {
socket.on('subscribe', function(lineId) {
socket.join('line-' + lineId);
});
});
function broadcastSensorData(lineId, data) {
io.to('line-' + lineId).emit('sensor-update', data);
}
NPM ekosystém a callback hell¶
Přes 100 000 balíčků — síla i slabina. Kvalita se liší. Callback hell řeší Promises, čekáme na async/await. IDE podpora slabší než pro Javu — WebStorm je nejlepší volba.
Koexistence s Javou¶
Java pro business logiku a REST API, Node.js pro WebSocket gateway. Redis pub/sub propojuje oba runtime. Každý dělá to, v čem je nejlepší.
Polyglot je budoucnost¶
Node.js není Java killer. Je to skvělý nástroj pro I/O-intensive scénáře. Klíčové je nebát se použít správný nástroj pro správný problém.