LINUX.ORG.RU

Вопрос про современные тенденции в плане показа сообщений/оповещений на странице

 cообщения, ,


0

1

Как лучше в современном веб выводить сообщений, оповещения, алерты и т.д. без обновления страницы (или редиректов) и без рендеринга по новой. Да последнее проблемой не является в силу, того что можно закэшировать, но чувство того что это прошлый день и смотрится как-то несовременно не покидают меня. Что пробовал/можно сделать:
socket.io - достаточно тормозное, res.render c точки зрения пользователя быстрей, плюс не надо лишнего js cкрипта
jquery - по сути прошлый день, но работает очень хорошо.
Vit

★★★★★

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

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

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

Скорей как показать без рендеринга страницы по новой. Хочется например только чтобы пользователь скачивал например только внутренности того div'а который изменился, без обновления страницы, например только текст сообщения.

anonymous_sama ★★★★★
() автор топика

socket.io

Смысл в этом какой для твоей задачи? Вебсокеты сойдут, либо вообще обычный ajax.

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

Смысла нет, сейчас думаю переписывать обратно на res.render, но чувство что я делаю, что-то неверно и можно это все сделать как-то изящней меня не покидает.

anonymous_sama ★★★★★
() автор топика

jquery - по сути прошлый день, но работает очень хорошо.

Чёртовы хипсторы. Когда вы все усрётесь от своего смузи?

crutch_master ★★★★★
()

Так, а зачем ты сразу через сокет выводишь? Рендеришь страничку, а потом через socket.io подгружаешь новые данные.

ritsufag ★★★★★
()

Кроме вебсокетов особых альтернатив не вижу. Вот только там message bus-ы все кривые как турецкая сабля (socket.io, faye). Я пока забил, потом буду либо свое колхозить на чистых вебсокетах, либо centrifugo попробую привернуть.

Vit ★★★★★
()

AJAX на нативном JS, если уж JQuery утончённому господину не по нраву.

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

let div = document.createElement(«div») div.innerHTML = «Notification Text» div.className = «notification» document.body.appendChild(div)

?

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

Оно же жирное и неповоротливое говно.

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

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

Оно же жирное и неповоротливое говно.

И не говори. Хуже JQuery только ванильный JS - тот вообще через раз работает и сильнее тормозит, приходится переписывать. Некоторые, правда, в этом обвиняет тупых программистов, но мы то знаем...

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

они как раз и срутся, веб получается соответствующий.

SevikL ★★★★★
()
Последнее исправление: SevikL (всего исправлений: 1)

Так ведь ReactJS с его контейнерами-компонентами, стейтами и присоединившимся к ним Redux для этого и придумали.

А с бэком как хочешь, так и контачь, сокеты или fetch.

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

Хуже JQuery только ванильный JS

Уже нет. Если в плане управления DOM, то ванильный умеет всё тоже самое.

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

А чем на сервере раздавал? Из модных я только centrifuge не ковырял. Faye и socket.io каждый по своему косячные. А у более мелких вообще статистика не наработана, чтобы о чем-то говорить.

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

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

Если там макаки засовывают селектор в цикл, почему они должны по-другому работать?

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

Некоторые, правда, в этом обвиняет тупых программистов, но мы то знаем...

Ну, в этом есть доля правды. Если dom не насиловать, там вменяемая скорость.

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

на сервере свой говнокод (python+gevent). игрушка писалась когда SSE был еще на стадии черновиков, тогда небыло готовых проверенных инструментов. но работает отлично досихпор, нагрузку в 10к+ держит спокойно. всетаки это удачный «протокол», считай теже вебсокеты но без оверхеда на шифрование и односторонний. жаль что популярность не обрел, боюсь что его отменят...

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

Сенькс.

Без шифрования не вариант IMHO. Иначе помрешь расследовать все кейзы, когда кривые прокси поломали твой траффик.

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

Есть у SSE одна проблема - лимит соединений.
Тобишь если юзер захочет открыть еще вкладки с твоим ресурсом, то он быстро исчерпает лимит соединений.
На лоре когда появились уведомления, они как раз использовали SSE и часть пользователей словили тормоза при загрузке нескольких вкладок. Макс потом все же перешел на вебсокеты.

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

Воу воу полегче! вот изза таких странных реализаций и тормозят говносайты... зачем для каждой вкладки открывать новое соединение то?

genryRar ★★
()

Ты мешаешь яблоки и груши.

jQuery - библиотека для работы с DOM, плюс немного сервисных функций для AJAX.

socket.io - библиотека для работы с неким аналогом веб-сокетов, с DOM не умеет совсем.

Ничто не мешает использовать jQuery совместно с socket.io - через второй получать сообщения, через первый выводить на страницу.

Что значит «медленно»? Долгое время между появлением события на сервере и отображения его на клиенте? Ты что-то делаешь не так, у меня socket.io не тормозил (не думаю, что для веб-алертов нужна миллисекундная точность отображения). Или ты про нагрузку на клиентский браузер? Опять же странно и скорее всего быдлокод с твоей стороны, ибо обе эти библиотеки достаточно быстрые. На jQuery так вообще пол-сайтов в интернете работает, включая ЛОР. И ЛОР, надо заметить, не тормозит.

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

Ты что-то делаешь совсем не так. Либо колись какого вида тормоза - долгий «пинг» до сервера, долгая загрузка страницы, высокая нагрузка на процессор в момент вывода уведомления?

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

Так в том то и дело, что если всё писать нормально, то не тормозит ни jQuery (вот ЛОР же не тормозит, да?), ни ванильный JS. А если писать говнокод, то тормозить будет опять же и то, и другое. Так что надо на быдлокодеров ругаться, а не на jQuery.

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

Ну так, а как иначе?
У браузеров лимит соединений на каждый домен.
Юзер открыл вкладку с SSE и занял соединение. И так с последующими до исчерпания лимита.
Я бы в принципе забил на это, если бы все современный браузеры имели лимит хотя в 20 коннектов, но все равно часть юзеров была бы удивлена тем что следующая вкладка не может прогрузиться.

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

Разве у вебсокетов шифрование обязательно? Использовал вебсокеты без шифрования для отладки проекта на локалхосте и всё было нормально.

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

Ого, jQuery уже прошлый день?

Уже давно век и даже не прошлый, а позапрошлый :)

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

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

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

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

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

https://github.com/nodeca/tabex мы делали такую штуку. На десктопах неплохо, но есть подозрение, что на мобилках там косяки копать и копать.

Мобилки при переключении вкладок гасят таймеры и прочие эвенты (причем каждый браузер со своим подвывертом). В итоге у тебя при переключении табов будет провал в связи, пока мастер прочухается, и как с этим грамотно бороться я пока не понял. Был вариант всегда открывать второе соединение на активном табе, а потом тихо гасить старое, но сложновато как-то.

Vit ★★★★★
()
Последнее исправление: Vit (всего исправлений: 2)
Ответ на: комментарий от KivApple

До первого сообщения долго, там сразу несколько запросов с переключением на websocket (да, я знаю, что можно polling отключить), потом уже сообщения идут моментально. Такое меня не устраивает. Я уже сделал просто на res.render несколько дней назад, но тема мне интересна. К слову я также пытался сделать на push.js.

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

Все это костыли, которые не везде будут работать.

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

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

про ограничения у мобилок незнал, спасибо. в том проекте это не актуально, но на будущее буду иметь ввиду. вообще сие довольно поршиво((

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

но раньше были хэши и маскирование сообщений. разве теперь это не обязательно?

мээээ... я не в курсе, давно спеку не смотрел. но это ж не криптография с открытыми ключами, которая ресурсы вымораживает на хендшейке.

про ограничения у мобилок незнал

https://github.com/nodeca/tabex/issues/5

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

нет канешно. но в асинхронном приложении под большой нагрузкой (овер 2к сообщений в секунду) эта сраная маска дает нехилую нагрузку (при том что само маскирование делается на сях а не на пистоне).

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