Saya sebenarnya sedang melakukan pengujian beban terhadap server ExpressJS, dan saya perhatikan bahwa respons yang dikirim oleh server menyertakan header "Connection: Keep-Alive" pada header. Sejauh yang saya pahami, koneksi akan tetap terbuka hingga server atau klien mengirimkan header "Connection: Tutup" pada header.
Pada beberapa implementasi, header "Connection: Keep-Alive" muncul dengan header "Keep-Alive" yang mengatur batas waktu koneksi dan jumlah maksimum permintaan berurutan yang dikirim melalui koneksi ini.
Sebagai contoh: "Keep-Alive: timeout=15, max=100"
Apakah ada cara (dan apakah relevan) untuk mengatur parameter ini pada server Express ?
Jika tidak, apakah Anda tahu bagaimana ExpressJS menangani hal ini?
Edit: Setelah melakukan beberapa penyelidikan, saya menemukan bahwa batas waktu default diatur di node standard http library:
socket.setTimeout(2 * 60 * 1000); // 2 minute timeout
Untuk mengubah ini:
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);
Bagaimanapun juga, masih terlihat sedikit aneh bagi saya bahwa server tidak mengirimkan petunjuk apa pun kepada klien mengenai batas waktunya.
Edit2: Terima kasih kepada josh3736 atas komentarnya.
setSocketKeepAlive tidak terkait dengan HTTP keep-alive. Ini adalah opsi tingkat TCP yang memungkinkan Anda untuk mendeteksi bahwa ujung koneksi yang lain telah hilang.
Untuk 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.
});