Может я не полностью понимаю, что происходит "внутри" XMLHttpRequest, но мне надо как-то сделать много запросов не создавая каждый раз новое подключение. Использую стандартный набор вызовов:
function GetFrame(){
var DataRequest = new XMLHttpRequest();
DataRequest.open("POST", "/index.php", true);
DataRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
DataRequest.send("Data="+Data);
DataRequest.onreadystatechange = function(){
if(DataRequest.readyState === 4){
if(DataRequest.status === 200){
if(DataRequest.responseText.length > 0){
Stream.src = DataRequest.responseText;
}
}
}
};
}
Всё работает, картинки меняются (идёт видео), но если посмотреть в файрволе на соединения - исходящие растут как снежный ком. Клиенты, которые эти картинки отправляют, написаны на плюсах - зацеплены сокетом за сервер и отправляют поток без нарастания соединений, а веб-интерфейс, где осуществляется просмотр, обращается к серверу AJAX-ами. Пытался вынести в глобальные пременные var DataRequest = new XMLHttpRequest(); - не помогло.
Можно как-то поддерживать соединение открытым и слать сколько угодно запросов по нему при помощи XMLHttpRequest? Или обязательно переписывать код на веб-сокеты?
PS: В конфиге apache - KeepAliveTimeout 86400 (сутки), MaxKeepAliveRequests 0 (не ограничено)
DataRequest.setRequestHeader('Connection', 'close')? – Yaant Jan 26 '17 at 08:46