LINUX.ORG.RU

Обновление JPEG на странице


0

1

Доброго дня!
Есть железка, при обращении по некоему URI она отдаёт кадр с сенсора в виде JPEG.
Необходимо автоматизировать получение и отображение этого JPEG на web-страничке, для этого сделано следующее с использованием jQuery:

<div id = "video" style = "width: 1280px; height: 720px; margin-left: auto; margin-right: auto">
    <img src = "jpg"></img>
</div>
while (true) {
	$.ajax({
		type: 'GET',
		url: 'jpg',
		success: function(data) {
			$('#video > img').attr('src', 'jpg?random=' + Math.random())
		}
	});
}
Проблема в том, что страница зависает намертво после получения первого изображения и появляется сообщение, что скрипты не отвечают длительное время.
Как это воможно исправить?
Спасибо.

★★

новый ajax из результата вызова старого может стоит делать

anonymous
()

while (true) {
Проблема в том, что страница зависает намертво после получения первого изображения

И вправду, почему??? [facepalm.svg]

anonymous
()
Ответ на: комментарий от Deleted

Нужно еще не забывать, что все браузеры текут (сборщик мусора убирает мусор лишь после того, как ты закроешь страничку, либо по прошествии очень большого времени). Поэтому такая технология все равно требует перезагрузки страницы 1 раз в несколько минут. Скажем, я когда 5 раз в секунду обновляю картинку (псевдовидео), раз в 5 минут перезагружаю страничку. Иначе где-то по прошествии семи-восьми минут oom-killer грохнет зажравшийся браузер.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

если будет свободные 10 минут можете проверить скрипт? интересует время жизни браузера и его название. после запуска приложения браузером зайти на 127.0.0.1:8000 или любой другой (заблаговременно исправив настройки). наружу скрипт сходит только за jquery. http://pastebin.com/DcbyxnmG

на Debian Jessie 3.10, Google Chrome 32.0.1700.107, 2Гб оперативной памяти, 700Мб swap устал ждать падения после получасового ожидания

anonymous
()
Ответ на: комментарий от anonymous

Я питон не знаю. Не работает твой скрипт. Как CGI не запускается, а если просто в командной строке запустить, пишет:

./test1.cgi
  File "./test1.cgi", line 12
    print 'need download'
                        ^
SyntaxError: invalid syntax

И что это вообще за странная штука? Неужто не можешь нормальный CGI написать?

Eddy_Em ☆☆☆☆☆
()

while (true)

lol

Ответ дали выше.

ritsufag ★★★★★
()
Ответ на: комментарий от Eddy_Em

это нормально, попытка запустить python2 скрипт на python3

anonymous
()
Ответ на: комментарий от anonymous
./test2.cgi

Traceback (most recent call last):
  File "./test2.cgi", line 8, in <module>
    from PIL import Image
ImportError: No module named 'PIL'

Ты хоть скажи, что скрипт делать-то должен? Может проще на баше CGI сделать, чем париться с этим пхытоном? Ну или на сях быстренько набросать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

И что это вообще за странная штука?

это python сервер, запускать просто из командной строки. по назначению: открывает порт 8000 на адресе 127.0.0.1, отдает страничку /, /jquery.min.js и картинки по запросу из js по адресу /jpg?random=....

Неужто не можешь нормальный CGI написать?

нет, не могу, уж извини, не умею

anonymous
()
Ответ на: комментарий от anonymous

Да ну его нафиг этот пхытон!

// и вообще, на работе у меня арчик, который уже больше полутора лет не обновлялся ввиду смерти дистрибутива; на генту дома уже перешел, но на работе пока боязно.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

КОИ-8, окаменевший арч, ляпота.

anonymous
()
Ответ на: комментарий от anonymous

Те картинки слишком мелкие. Меняются 1 раз где-то в 1-2 секунды (на что хромого хватает, в огнелисе не хочу запускать). Заменил на панорамки: 55МБ и 37МБ, паузу увеличил до 3 секунд, чтобы картинки успевали подгружаться. Похоже, все-таки, нужны разные изображения (т.к. он в кэше хранит только 2-3).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Похоже, все-таки, нужны разные изображения (т.к. он в кэше хранит только 2-3).

да не должен же, он ведь не знает что ему одинаковые картинки на разные запросы отдают.

anonymous
()

async: false спасёт тебя, чудо ты наше. Только потом обязательно прочти https://api.jquery.com/jquery.ajax/, а не то придёт Сотона и укусит за бочок. А ещё лучше поставить енто дело на setInterval, чтобы не мучать понапрасну сервер. Если же хочешь сделать всё совсем хорошо, смотри в сторону вебсокетов.

heilkitty ★★
()
Последнее исправление: heilkitty (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.