Ajax chat pomocí komponent
- ParallelUniv3rse
- Člen | 13
Zdravím,
Potřeboval bych nasměrovat správným směrem..
mám AJAX chat co vypadá následovně:
http://oi57.tinypic.com/vhs13n.jpg
A potřeboval bych ho v kódu zpracovat nejspíš pomocí komponenty.
Po koliknutí na uživatele se pomocí bootstrap collapse vysune okno se
zprávami a inputem na posílání nových zpráv.
Potřeboval bych aby se nezávisle:
- dalo znovuvykreslovat zprávy (na odeslání / přijetí)
- znovuvykreslovat online status (zelené / červené kolečko vedle jména), bez toho aniž by se collapse zavřel!
Jak to pomocí komponent provedu?
Z dokumentace jsem se nedozvěděl skoro nic, proto se obracím sem :)
Díky!
- Azathoth
- Člen | 495
@Myiyk a proč by to nešlo ajaxem? Komponenta se umí vykreslit,
takže je to jak logická, tak grafická část (všechno, co máš jako
komponentu má i nějakou grafiku, tak nechápu, co myslíš tím, že
komponenty neřeší uživatelskou část).
Udělat posílání příspěvků by nebylo těžké, prostě bys posílal
signál a měl na to handle metodu, ale netuším, jak udělat ajaxově
překreslování, když ti něco napíše ten druhý…
Kvůli tomuhle by to asi chtělo čistě javascript.
Editoval Azathoth (6. 6. 2015 13:05)
- Lukeluha
- Člen | 130
Já osobně jsem nyní do bakalářky řešil AJAXový chat. Měl jsem jednu komponentu s názvem ChatControl, která v sobě obsahovala lidi, kterým můžu napsat, jejich statusy a prostě veškerou logiku na straně serveru. Na straně klienta jsem použil AngularJS, v jQuery nebo v čistém JS bych se z toho zbláznil. Každopádně chat jsem měl téměř stejný jako je na fb, pokud bys měl nějakou jednu chatovací místnost, tak by to šlo udělat poměrně pěkně přes jednotlivé komponenty, v JS by sis jen napsal nějakou kontrolu nově přijatých zpráv po nějakém intervalu + odchytávání event (enter odesílá zprávu, atd).
- Myiyk
- Člen | 321
@Azathoth aby jsi zjistil, že ti přišla zpráva, musíš periodicky co např. 5s z javascriptu volat tu komponentu a ptát se na nové zprávy.
Záleží na tobě co si budeš serverem posílat. Posílej si raději čistá data, ne šablonu s daty.
Jednoduše z těch dat můžeš sestavit html, které přidáš do chatu. A taky si můžeš vytáhnout ID zprávy, která přišla jako poslední a při tázání serveru na novinky mu to ID budeš posílat, nebo čas kdy zpráva přišla. A server může vracet pouze nové zprávy.
- ParallelUniv3rse
- Člen | 13
Jojo, to tu uživatelskou část celou mám, šlo mi spíš o to že mám
snippet, který obaluje celý chat a pak dynamické snippety se zprávani
v jednotlivých konverzacích.. Jenže při překreslení celého chatu kvůli
online statusu se mi zavřel collapse s konverzací.
Tak jsem se chtěl zeptat, zda li by to šlo rozkouskovat pomocí komponent tak,
aby se to navzájem neovlivňovalo. A předpokládám že mít dvě sady
dynamických snippetů v jednom obalujícím snippetu je asi blbost,
ne? :)
- Zax
- Člen | 370
Rozkouskovat to určitě jde, můžeš mít komponentu na celé okno chatu, v tom komponentu na seznam lidí, komponentu na seznam zpráv a komponentu na pole na psaní a odesílání zpráv a každá z těch subkomponent si bude jakoby žít vlastním životem, můžeš je zvlášť překreslovat, v hlavní komponentě můžeš navěšovat eventy (zpráva odeslána → ihned překresli seznam zpráv) atd. Komponenty tvoří strom a presenter je vlastně taky jenom komponenta, takže se s tím pracuje všude naprosto stejně.