Legion12
New member
Добрый день, форумчане.
Я "как обычно" - ничего похожего не нашла, поэтому делюсь в новой теме, прошу ткнуть носом, коли не знала
Постараюсь описать как можно подробнее:
1. Есть устройство, к которому подключается ESP8266.
2. Устройство шлет в COM-порт данные в формате JSON, ESP8266 по тому же COM-порту их принимает.
3. На веб-странице реализован XMLHttpRequest.
4. С веб-страницы шлется запрос, ESP8266 берет из COM-порта строку - JSON - и шлет в браузер.
5. JSON прилетает, спокойно парсится на уровне веб-страницы, данные выводятся куда надо.
Это все понятно, это все работает, это все проверено.
Проблема в том, что это все должно происходить в РЕЖИМЕ РЕАЛЬНОГО ВРЕМЕНИ. Данные с устройства в COM-порт идут беспрерывно, с задержкой минимум в 10мс, максимум в 200мс, и их точно также беспрерывно нужно выводить на веб-страницу.
Постоянно слать запросы - не вариант.
Во-первых, проблема в javascript - xmlhttprequest напрочь отказывается работать в цикле. Решение запихать его в setInterval(function, delay):
Работает, да, но функция асинхронная, поэтому не успев получить данные, уже шлет новые запросы. Как заставить ее работать в режиме "получил данные - только после этого шли запрос" я не пойму.
И здесь же - во-вторых, от кучи принятых ответов браузер в один прекрасный момент(где-то через полчаса) делает "ЧПОК" и виснет намертво. Предполагается, что устройство работает долгие часы, и такого сбоя происходить не должно. Как удалять из кэша браузера обработанные ответы на запрос - тоже тайна.
В общем-то мне самой кажется, что все это реализовано крепко неправильно и меня побьют
В этой связи: а есть ли вообще способы реализовать постоянную отправку данных на веб-страницу, минуя xmlhttprequest? Если нет, то как жить?
ESP программируется в ArduinoIDE.
Я "как обычно" - ничего похожего не нашла, поэтому делюсь в новой теме, прошу ткнуть носом, коли не знала
Постараюсь описать как можно подробнее:
1. Есть устройство, к которому подключается ESP8266.
2. Устройство шлет в COM-порт данные в формате JSON, ESP8266 по тому же COM-порту их принимает.
3. На веб-странице реализован XMLHttpRequest.
4. С веб-страницы шлется запрос, ESP8266 берет из COM-порта строку - JSON - и шлет в браузер.
5. JSON прилетает, спокойно парсится на уровне веб-страницы, данные выводятся куда надо.
Это все понятно, это все работает, это все проверено.
Проблема в том, что это все должно происходить в РЕЖИМЕ РЕАЛЬНОГО ВРЕМЕНИ. Данные с устройства в COM-порт идут беспрерывно, с задержкой минимум в 10мс, максимум в 200мс, и их точно также беспрерывно нужно выводить на веб-страницу.
Постоянно слать запросы - не вариант.
Во-первых, проблема в javascript - xmlhttprequest напрочь отказывается работать в цикле. Решение запихать его в setInterval(function, delay):
JavaScript:
setInterval (function request() {
var answer;
xhr.open('GET', 'W', true);
xhr.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
answer = JSON.parse(this.responseText);
p.innerHTML = answer.P;
s.innerHTML = answer.S;
}
}
xhr.send(''); },600);
И здесь же - во-вторых, от кучи принятых ответов браузер в один прекрасный момент(где-то через полчаса) делает "ЧПОК" и виснет намертво. Предполагается, что устройство работает долгие часы, и такого сбоя происходить не должно. Как удалять из кэша браузера обработанные ответы на запрос - тоже тайна.
В общем-то мне самой кажется, что все это реализовано крепко неправильно и меня побьют
В этой связи: а есть ли вообще способы реализовать постоянную отправку данных на веб-страницу, минуя xmlhttprequest? Если нет, то как жить?
ESP программируется в ArduinoIDE.