在服务器端使用Sinatra和stream
块.
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;
}
}
在upstream
节中试过keepalive
次,在proxy_set_header Connection keep-alive;
4location
节中试过proxy_set_header Connection keep-alive;
次.
没有什么帮助:(
没有持久性连接,也没有未传递给任何客户端的消息.