Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Принцип обновления окна чата без моргания
ТвойWeb » WebMaster класс » PHP/Perl » Принцип обновления окна чата без моргания

Страниц (2): [1] 2 »
 

1. funnyman - 17 Августа, 2009 - 07:33:15 - перейти к сообщению
Кто-нить может коротко обяснить (или дать ссылки) как осуществляется сам принцип обновления окна чата без мерцания, на подобии поточного чата?
Интересен сам принцип и конечно если можно на каком-нибудь примере это увидеть.
Что вообще используется для этого как реализовать....?
Желательно попроще как-нибудь.....
2. Furax - 17 Августа, 2009 - 08:35:50 - перейти к сообщению
Под "морганием" подразумеваются неприятные эффекты при перезагрузке страницы? Обычно используют AJAX, т. е. реализуют подгрузку новых сообщений средствами JavaScript (или даже Flash...), не перезагружая каждый раз страницу.
3. funnyman - 17 Августа, 2009 - 09:20:07 - перейти к сообщению
Furax пишет:
Под "морганием" подразумеваются неприятные эффекты при перезагрузке страницы?

Именно.
Furax пишет:
Обычно используют AJAX, т. е. реализуют подгрузку новых сообщений средствами JavaScript (или даже Flash...), не перезагружая каждый раз страницу.

С флешем мне конечно удобнее, так как лучше знаком.
Но с AJAX даже не представляю как.
А других путей нет никаких, например через джаваскрипт или может быть через кукки....?
4. Furax - 18 Августа, 2009 - 00:56:36 - перейти к сообщению
Куки тут не при чём, а AJAX - это и есть связка "JavaScript + серверная часть".
5. funnyman - 18 Августа, 2009 - 07:03:31 - перейти к сообщению
Куки - это то что записывается на комп. Т.е. если это уже есть на компе, то обновлять это уже не нужно.
Ну это ладно, нет так нет.
Да и разбираться с ними не охото.

А есть какое-нибудь простое решение, чтобы заставить браузер обновляться не тупо например через каждые 10 секунд, а только тогда, когда кто-то запостил строчку в чате?
Простое решение есть? Без аякса и флеша.

Просто я пробовал делать через флеш. Но там идёт сильное потребление трафика и нагрузка на сервер за счёт большого обращения к серверу.
6. Furax - 18 Августа, 2009 - 09:32:57 - перейти к сообщению
funnyman пишет:
Куки - это то что записывается на комп. Т.е. если это уже есть на компе, то обновлять это уже не нужно.
Вот именно. Поэтому, когда кто-то запостит новую строчку, появиться в куках она в принципе не сможет... Да и не влезет ни один чат в куки по размеру - там весьма жёсткие ограничения.

funnyman пишет:
А есть какое-нибудь простое решение, чтобы заставить браузер обновляться не тупо например через каждые 10 секунд, а только тогда, когда кто-то запостил строчку в чате?
А откуда браузер это должен узнавать? При работе по HTTP у сервера нет возможности обращаться к клиенту, поскольку соединение рвётся сразу по окончании передачи данных. Поэтому обычно просто заставляют браузер через некоторые промежутки времени получать свежую порцию данных - обновляя страницу или JavaScriptом.

Другое дело - Flash, там в последних версиях ActionScript, насколько я знаю, уже есть возможности держать соединение. Однако и серверную часть придётся делать не на PHP, поскольку большинство хостов (в первую очередь - бесплатных) кончает выполняющийся скрипт уже через 30 секунд, и все его соединения, разумеется, рвутся. Придётся ставить своё серверное приложение - как и делается, например, при создании IRC-чатов, к которым встречаются, в том числе, и Flash-клиенты.

Поэтому, если не собираешься заниматься настройкой серверов - используй периодическую подгрузку данных. Пример есть, например, здесь.
7. funnyman - 18 Августа, 2009 - 11:38:08 - перейти к сообщению
Furax
Я думал есть что-то из простых решений.
Ну тогда пусть моргает.... добрые 90-ые! было же время... Улыбка
8. yura3d - 19 Августа, 2009 - 12:29:00 - перейти к сообщению
Наиболее простой вариант (глубоко не вдаваясь в тонкости Ajax) - использовать скрытый фрейм (ифрейм). Тогда содержимое фрейма можно обновлять обыкновенным рефрешем, а подгруженный во фрейме текст копировать во фрейм (слой) с сообщениями, для этого подойдёт простейший метод на основе innerHTML. Скрипт отдачи сообщений нужно переписать таким образом, чтобы он отдавал пользователям только новые сообщения, это в разы сократит потребляемый траффик
9. yura3d - 19 Августа, 2009 - 12:36:42 - перейти к сообщению
Только что подгруженные сообщения будут добавляться к уже существующим в основном фрейме (слое) с сообщениями, никакие куки при этом не задействуются. Говорю это как автор чата, на который Furax привёл ссылку выше
10. ETC - 19 Августа, 2009 - 23:13:21 - перейти к сообщению
Угу и пара сотен пользователей завалят весь хост.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0441]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33