Eu tenho um aplicativo Node.js que usa Transfer-Encoding: Chunked
para transmitir dados via HTTP continuamente até que o cliente se desconecte. Ao executar uma instância local do Nó, ela funciona bem, mas quando implantada em um Serviço de Aplicativo do Azure (que executa aplicativos do Nó por iisnode ) , as conexões do cliente ficam suspensas sem nunca receber dados.
A criação de log indica que o aplicativo Node está processando solicitações e transmitindo dados corretamente, mas, por algum motivo, esses dados não estão atingindo o cliente.
Aqui está um exemplo simplificado da maneira como estou transmitindo dados do Node:
var server = http.createServer();
server.on('request', function(request, response) {
var interval = setInterval(function() {
response.write("some data\r\n");
}, 1000);
request.on('close', function() {
clearInterval(interval);
});
});
server.listen(config.port);
Em meu arquivo de configuração iisnode.yml
, defini flushResponse: true
para evitar que o iisnode armazene blocos de resposta em buffer.
Meu palpite é que o IIS está tentando armazenar em buffer toda a resposta antes de enviá-la, mas não sei como desabilitar esse comportamento.