Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

235
Vistas
Cómo desactivar el almacenamiento en búfer en el servidor Nginx para el evento enviado por el servidor

Problema: el servidor Nginx está almacenando los eventos enviados por el servidor (SSE).

Configuración: Nodo v12.13.1, Nginx 1.16.1, Chrome v80

Escenario: Traté de desactivar el almacenamiento en búfer con proxy_buffering off; e incluso agregó "X-Accel-Buffering": "no" en el encabezado de resonancia del servidor, sin embargo, nginx todavía está almacenando en búfer todo SSE. si cierro el servidor de nodos o reinicio el servidor nginx, todos los mensajes de SSE se envían al cliente de forma masiva. Intenté mucho, pero no sé que me estoy perdiendo.

Archivo de configuración de Nginx:

 events { worker_connections 1024; } http { include mime.types; sendfile on; keepalive_timeout 65; server { listen 4200; server_name localhost; location / { proxy_set_header Connection ''; proxy_http_version 1.1; chunked_transfer_encoding off; proxy_buffering off; proxy_cache off; proxy_pass http://localhost:8700; } } }

Servidor de nodo:

 var express = require('express'); var app = express(); var template = `<!DOCTYPE html> <html> <body> <script type="text/javascript"> var source = new EventSource("/events/"); source.onmessage = function(e) { document.body.innerHTML += e.data + "<br>"; }; </script> </body> </html>`; app.get('/', function (req, res) { res.send(template); // <- Return the static template above }); var clientId = 0; var clients = {}; // <- Keep a map of attached clients // Called once for each new client. Note, this response is left open! app.get('/events/', function (req, res) { req.socket.setTimeout(Number.MAX_VALUE); res.writeHead(200, { 'Content-Type': 'text/event-stream', // <- Important headers 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'X-Accel-Buffering': 'no' }); res.write('\n'); (function (clientId) { clients[clientId] = res; // <- Add this client to those we consider "attached" req.on("close", function () { delete clients[clientId] }); // <- Remove this client when he disconnects })(++clientId) }); setInterval(function () { var msg = Math.random(); console.log("Clients: " + Object.keys(clients) + " <- " + msg); for (clientId in clients) { clients[clientId].write("data: " + msg + "\n\n"); // <- Push a message to a single attached client }; }, 2000); app.listen(process.env.PORT || 8700);
over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda