Je fais actuellement des tests de charge sur un serveur ExpressJS, et j'ai remarqué que la réponse envoyée par le serveur comprend un en-tête "Connection: Keep-Alive". Si je comprends bien, la connexion restera ouverte jusqu'à ce que le serveur ou le client envoie un en-tête "Connection: Close".
Dans certaines implémentations, l'en-tête "Connection: Keep-Alive" propose un en-tête "Keep-Alive" définissant le délai de connexion et le nombre maximal de requêtes consécutives envoyées via cette connexion.
Par exemple: "Keep-Alive: timeout = 15, max = 100"
Existe-t-il un moyen (et est-il pertinent) de définir ces paramètres sur un serveur Express?
Sinon, savez-vous comment ExpressJS gère cela?
Edit: Après quelques investigations, j'ai découvert que le délai par défaut est défini dans la bibliothèque http standard de noeud :
socket.setTimeout(2 * 60 * 1000); // 2 minute timeout
Pour changer cela:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("Hello World");
}).on('connection', function(socket) {
socket.setTimeout(10000);
}).listen(3000);
Quoi qu'il en soit, cela me semble encore un peu bizarre que le serveur n'envoie aucune indication au client concernant son délai d'expiration.
Edit2: Merci à josh3736 pour son commentaire.
setSocketKeepAlive n'est pas lié à HTTP keep-alive. Il s'agit d'une option de niveau TCP qui vous permet de détecter que l'autre extrémité de la connexion a disparu.
Pour Express 3:
var express = require('express');
var app = express();
var server = app.listen(5001);
server.on('connection', function(socket) {
console.log("A new connection was made by a client.");
socket.setTimeout(30 * 1000);
// 30 second timeout. Change this as you see fit.
});