Autor Zpráva
slon_cz
Profil
Zdravím, toto není úplně téma o radu, spíš by mě zajímalo, kdo z Vás má nějaký vlastní chat, jak u vás funguje aktualizace zpráv?

Já se co jsem se pouštěl do svého, tak funguje skrz php, který naítá zprávy a jednou za 10 sekund pomocí javascriptu aktualizuje zprávy. Bohužel nevím jak vyřešit, aby když scrolluju v chatu dolů, tak při aktualizaci mě to nehodilo zase zpět nahoru. Proto se ptám Vás, co používáte na načítání zpráv Vy? :)
Keeehi
Profil
Když to budeš aktualizovat AJAXem, tak tě to nahoru házet nebude.

slon_cz:
funguje skrz php, který naítá zprávy a jednou za 10 sekund
Takže to má až deset sekund zpoždění. To je celkem dost. Ten čas se dá udělat variabilní. Když někdo odešle nebo přijme zprávu, tak třeba prvních 5 vteřin se budeš ptát serveru každou vteřinu a pak postupně zpomalíš až na těch 10 vteřin. => Když se v chatu něco děje, tak se aktualizuje častěji aby to bylo co nejvíce živé a naopak když je klid, tak se aktualizuje jen občas, aby tak nezatěžoval server.
Existuje postup, kterým se dá dosáhnout téměř okamžité odpovědi aniž by se na server stále posílaly dotazy. Jmenuje se Long Polling. Problém s ní je, že ti pak na serveru běží tolik procesů PHP kolik je zrovna připojených klientů a většina z nich je nečinná a spí. Pokud ti toto nevadí, tak si to můžeš na svém serveru nastavit. Na hostingu to nejspíš nepůjde, jelikož ty mívají limity na počty běžících PHP procesů.

Jak se to ale dělá dnes? Pomocí Web Sockets. Vytvoří se obousměrný kanál a pak může posílat zprávy jak klient tak i server. Klient se tak nemusí na nic ptát a server mu jen pošle zprávu zrovna když ji má. Je to čisté a efektivní řešení. Podpora v prohlížečích je dobrá (cca 93 %) a vždy můžeš vytvořit i fallback na AJAXové načítání pokud by jsi chtěl podporovat úplně všechny. Problém s WS je, že je musí podporovat i server. Což opět v případě ze máš vlastní půjde nejspíše zařídit, pokud máš hosting, tak tam můžeš narazit.
Trejpa
Profil
slon_cz:
Bohužel nevím jak vyřešit, aby když scrolluju v chatu dolů, tak při aktualizaci mě to nehodilo zase zpět nahoru.
Nejjednodušší je odkazovat se na kotvu (ID) elementu umístěného na konci dokumentu s vypisovaným textem.
Keeehi
Profil
Trejpa:
Já z toho měl pocit, že se mu nejnovější zprávy objevují nahoře a dolů scrolluje když se chce podívat do historie.
slon_cz
Profil
Keeehi, děkuji za zprávu, kouknu na ten web socket, to bude asi nejlepší :)
btw, ano, nejnovější zpráva nahoře, nejstarší dole.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: