0

Я использую Amazon Elastic Beanstalk (Nginx 1.4.2 + Passenger 4.0.20 + Ruby 1.9.3) для развертывания приложения sinatra, которое использует события, отправленные сервером. Все работает отлично на локальной машине, используя тонкие. Однако на AWS Elastic Beanstalk соединение падает после миллисекунд.Server Sent Events/EventSource с Sinatra на эластичном бобовом стебле

сервер код выглядеть следующим образом:

get '/stream', provides: 'text/event-stream' do 
    response.headers['X-Accel-Buffering'] = 'no' 
    stream :keep_open do |out| 
    settings.connections << out 
    out.callback { settings.connections.delete(out) } 
    end 
end 

На журнале сервера я вижу тайм-аут соединения:

2013/11/20 19:45:46 [info] 9716#0: *35 client closed connection while waiting for request, client: xxx.xxx.xxx.xxx, server: 0.0.0.0:80

Пробовал конфигурации Nginx предложенной здесь (EventSource/Server-Sent Events through Nginx) под блоком сервера и хотя ответ заголовка меняется, он еще не работает.

(я должен был установить X-Accell-буферизацию на Nginx файла, а также, потому что она не будет принимать параметры, установленные в серверном коде с Синатрой)

заголовок ответа выглядит следующим образом:

HTTP/1.1 200 OK 
Content-Type: text/event-stream;charset=utf-8 
Date: Wed, 20 Nov 2013 20:03:06 GMT 
Server: nginx/1.4.2 + Phusion Passenger 4.0.20 
Status: 200 OK 
X-Accel-Buffering: no 
X-Content-Type-Options: nosniff 
X-Powered-By: Phusion Passenger 4.0.20 
transfer-encoding: chunked 
Connection: keep-alive 

Любые идеи?

Заранее спасибо.

ответ

1

Вы попробовали предложение в комментариях? мне кажется более логичным

proxy_buffering off; 
proxy_cache off; 

Также, пожалуйста, поделитесь своей текущей конфигурацией, если они не работают.

+0

Я пробовал это, и он не работал. Я закончил тем, что отказался от Elastic Beanstalk и ngnix, используя обычный экземпляр EC2. – buzali

Смежные вопросы