LINUX.ORG.RU

Firefox очень долго соединяется с вебсокетом

 , ,


0

1

Проверял как на «малинке», так и на обычном компьютере: иной раз может минута пройти между тем, как открыл веб-страницу, соединяющуюся с вебсокетом, и соединение установилось.

Использую libwebsockets.

При этом обычные тесты (тот же libwebsockets-test-server) работают на ура!

Вебсокет обычный, без SSL. Что за странность — не понимаю. С чем это может быть связано?

Или мне стоит и веб-страницу вебсокетом выдавать, а не nginx'ом, как это сейчас?

☆☆☆☆☆

А что-нибудь в консоле инспектора необычное пишет? Что пишет в логах nginx при соединении кроме access строчки, возможно есть что-то в error логе.
С чистым профилем пробовал?
Да рад видеть снова.

anonymous_sama ★★★★★
()

Ты бы хоть какие-то примерчики из трех строчек залил. Непонятно же чем твой пример отличается от libwebsockets-test-server.

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

Да вообще тишина. Firefox в отладочных пишет, что соединение открыто, но тупо висит, сервер не откликается какое-то время.

Я выложу этот проект на гитхаб и дам ссылку в течение часа.

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

Я запускаю websocktest, он пишет обычные диагностические сообщения и ждет соединения. Потом открываю веб-страничку — и тишина. Может за пару секунд соединение установиться, а может и за минуту!

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

У тебя URL неправильно считается, ты забыл отрезать старый порт, и в apprURL хранится вот такая шляпа: «ws://localhost:8080:9999»

Если вписать туда правильный URL, то всё работает. И соединение происходит почти мгновенно.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 3)
Ответ на: комментарий от Eddy_Em

здесь с ошибками: https://gist.githubusercontent.com/olegchir/1ee83a2d219670b02259/raw/309de7e5...

ну я понимаю, что у тебя скорей всего другой гцц и там это не ошибки, просто указал что когда будешь отдавать кому-то свой код, сделай -Werror не дефолтной опцией

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

Firefox в отладочных пишет, что соединение открыто, но тупо висит, сервер не откликается какое-то время.

у меня Firefox открывает мгновенно (исправления того бага с неправильным URL, о котором я писал выше). Так что ищи проблему в своей машине. Может быть, между тобой и сервером стоит какой-нибудь говнопрозрачный говнопрокси, и ему требуется некислое время чтобы просраться вебсокетом. Или какие-нибудь параноидальные плагины не доверяют соединениям с того сервера.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

СПАСИБО!

Черт, такая элементарщина. И прошляпил... Вот, что значит — полный нуль в вебе!

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: СПАСИБО! от Eddy_Em

Firefox в консоли разработчика кричит об этой ошибке на полэкрана. Я думаю, что ты фатально спалился: теперь мы знаем, что ты любишь KOI-8, потому что вместо браузера используешь Lynx xD

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

Не, я без -Werror ничего не собираю. Кому надо, могут выкинуть. А с таким новым gcc я никогда не сталкивался.

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

Вебсокеты, насколько я знаю, через прокси вообще не работают. Так что, там, похоже, проблема именно в неправильном адресе была. Правда, у меня и сетевуха на ладан дышит (пришлось даже сконфигурировать, чтобы в dmesg весь хлам не сыпался, а то он за неделю до неприличных размеров раздувался).

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

Нет, у меня в firebug пусто было!

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

Поэтому -Werror и пишу.

И вообще, погромизм — не моя стезя. Мне как-то железяки ближе.

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

URL считался правильно. Не было там "хвоста" от старого порта. Непонятно, но почему-то тупит.

Eddy_Em ☆☆☆☆☆
() автор топика

Сталкивался с чем-то подобным: когда вебсокет за nginx, то бывает браузер долго не может подключиться. Было лень посмотреть tcpdump'ом кто виноват. Может руки дойдут посмотрю.

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

Черт, если это так, надо будет веб-морду воткнуть прямо в вебсокет.

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

Я сейчас еще с другой проблемой бьюсь: у меня вебсокет шлет кодированное в base64 видео. И если клиент отключается, то происходит assert из-за неполной передачи фрейма.

Вот и думаю: либо патчить libwebsockets, чтобы ей было пофиг на неполную передачу пакета (вообще, это, конечно, "гениально": поставить assert на потерю данных!), либо же попытаться как-то это обойти.

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

то происходит assert из-за неполной передачи фрейма.

если там реально assert, а не exception, твоё libwebsockets какое-то эпическое говно. Может его стоит выбросить, и поискать что-то нормальное.

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

Реально assert. Там вообще страхошиздило внутри.

А больше я библиотечек для работы с вебсокетами не встречал. Под старый протокол у меня был свой велосипед, но с новыми он не работает.

Ладно, закину демона в inittab с respawn и хрен с ним.

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

По ссылке кроме libwebsockets ничего дельного не предлагают — только какое-то цеплюсплюсное говно.

чо за старый и новый протокол?

Пару лет назад протокол был проще, у меня stansalone код занимал страниц пять всего...

Eddy_Em ☆☆☆☆☆
() автор топика
8 февраля 2016 г.

// Eddy_Em

Сегодня поставил библиотеку 1.6.3. Правда, пришлось много подправить под новые API, но это фигня. Главное — соединение теперь идет очень быстро, т.е. косяк был в самой библиотеке. Но теперь другая проблема замечена: демон крутится на "малинке", которая торчит во внутренней локалке. Наружу она может попадать через SNAT на моей машине.

И вот в чем косяк: стоит только мне очистить правила iptables (iptables -F), чтобы промоделировать ситуацию, когда "малинка" будет только во внутренней локалке работать без выхода наружу, как вебсокеты перестают работать напрочь! Только я NAT активирую, как все в порядке.

В чем может быть косяк? Может, как-то хитро сеть надо настроить?

anonymous
()
Ответ на: // Eddy_Em от anonymous

подними на машине где браузер tcpdump (что он насобирал потом wireshark ом посмотришь) и посмотри что там и куда текет после очистки iptables.

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

Спасибо, попробую подампить.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.