在服務器端使用Sinatra和stream
塊。通過Nginx發送EventSource/Server事件
get '/stream', :provides => 'text/event-stream' do
stream :keep_open do |out|
connections << out
out.callback { connections.delete(out) }
end
end
在客戶端:
var es = new EventSource('/stream');
es.onmessage = function(e) { $('#chat').append(e.data + "\n") };
當我使用的應用程序直接通過http://localhost:9292/
,一切都運行完美。連接是持久的,所有消息都被傳遞給所有客戶端。
但是,當它通過Nginx,http://chat.dev
時,連接將被丟棄,並且重新連接每秒鐘都會觸發。
Nginx的設置看起來不錯對我說:
upstream chat_dev_upstream {
server 127.0.0.1:9292;
}
server {
listen 80;
server_name chat.dev;
location/{
proxy_pass http://chat_dev_upstream;
proxy_buffering off;
proxy_cache off;
proxy_set_header Host $host;
}
}
試圖keepalive 1024
在upstream
部分以及proxy_set_header Connection keep-alive;
在location
。
沒有什麼幫助:(
沒有持續的連接和郵件不會傳遞到任何客戶端。
哦,就是這樣!現在工作!向公衆發起我的超級聊天!萬分感謝! –
它適用於我與ngix的nodejs服務器,我也使用EventSource.thanks。 –
工作得很好。男人,這很難調試。非常感謝! –