1.6 и nginx-push-stream-module
den68
nginx-forum at nginx.us
Tue Jun 17 12:54:40 UTC 2014
При использовании nginx-push-stream-module (+ родной JS FM pushstream.js ) и
nginx 1.6 неожиданно появилась проблема:
крутится спин (загрузка) и 'ожидаю хост ...' и так до таймаута указанного в
параметре push_stream_longpolling_connection_ttl,
в этот промежуток оставшийся JS недогружается до окончания
таймаута...(document.ready).
Такое поведение при загрузке каждой страницы.
Используется схема лонг-пулл.
Логика хостов примерно следующая:
rpl.*.site.ru - push
*.site.ru - web
в JS более чем стандартно, приводить не имеет смысла, в конфиге nginx в
общем-то тоже.
проблема решается только усечением ttl до 1 секунды, но это как-то
неправильно, совсем...
трое суток экспериментов не принесли результата ...
может кто сталкивался?
http {
push_stream_shared_memory_size 60m;
push_stream_max_channel_id_length 150;
push_stream_max_messages_stored_per_channel 100;
push_stream_timeout_with_body off;
.....
server {
server_name
rpl.site.ru;
access_log off;
sendfile off;
charset utf-8;
include conf.d/header_set;
location /pub {
push_stream_publisher admin;
push_stream_store_messages on;
push_stream_channel_info_on_publish on;
push_stream_channels_path $arg_id;
client_max_body_size 256k;
client_body_buffer_size 256k;
allow 127.0.0.1;
}
location ~ /sub/(.*) {
push_stream_subscriber long-polling;
push_stream_channels_path $1;
push_stream_last_received_message_tag $arg_tag;
push_stream_last_received_message_time $arg_time;
push_stream_longpolling_connection_ttl 1s;
push_stream_message_template
"{\"id\":~id~,\"channel\":\"~channel~\",\"text\":~text~,\"tag\":\"~tag~\"
итд..
add_header 'Access-Control-Allow-Origin' $allow_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, OPTIONS';
add_header 'Access-Control-Allow-Headers' $acah;
add_header 'Access-Control-Expose-Headers' 'ETag';
add_header 'Last-Modified' '';
if ($request_method = OPTIONS) { return 204; }
}
....
}
в JS :
var pushstream = new PushStream({
host: rplhost,
timeout: 20000,
urlPrefixLongpolling: '/sub',
modes: "longpolling"
});
pushstream.onmessage = rpl_messageReceived;
pushstream.onstatuschange = rpl_messageStatus;
pushstream.removeAllChannels();
pushstream.addChannel('n_...');
pushstream.addChannel('n_...');
.....
pushstream.connect();
собственно все ... от чего такие тормоза? не может быть что у всех так
работает (не работает) ..
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,250930,250930#msg-250930
Подробная информация о списке рассылки nginx-ru