[wouso-dev] Ajax si Design

Alex Eftimie alex at eftimie.ro
Sat Jul 7 20:52:29 EEST 2012


2012/7/7 Iulian Stana <julian.stana at gmail.com>:
> Am si eu niste mici probleme cu ajax-ul....
> Momentan vreau sa fac chat-ul privat intre 2 utilizatori si ma cam bate
> ajax-ul.
>
> Eu trimit mesajul la modul:
>
>   var msgdata = {'opcode':'message', 'msg':input, 'room': room};
>   var args = {type:"POST", url:"m/", data:msgdata, complete:ReceiveMessage};
>   $.ajax(args);
> Unde:
> -m/ este url-ul pentru def sendmessage(request):
> -room este un string care reprezinta numele unui ChatRoom.
>
> O prima problema este in momentul in care incerc sa citesc in views.py din
> url,
> cu request, valoarea lui 'room', pe care o fac cu request.POST['room'].
> Problema este ca daca fac acestu lucru intampit un 'mic lag'. Adica daca
> trimit
> un mesaj, acesta ajunge la un alt utilizator al chat-ului in momentul in
> care
> trimite si el un mesaj, si astfel primeste toate mesajele trimise intre
> ultimile
> doua mesaje ale lui.

Asta înseamnă că ceva nu funcționează. Dacă vine împreună cu alt
mesaj, e servit de răspunsul (echo) la mesajul lui și nu de o metodă
custom făcută de tine pentru a cere mesaje noi. Recomandarea mea e să
testezi din cod ce răspuns primești pentru fiecare cerere.

Poți (și recomand) să faci unittesting folosind django client.
https://docs.djangoproject.com/en/1.2/topics/testing/#default-test-client

> Daca nu cer request.POST['room'] totul merge perfect.

Vezi mai sus. Verifică dacă îl trimiți. Verifică dacă îl primești
(folosind logging sau print).

> Intrebarea mea este daca pot intr-un alt fel sa iau din request valoare data
> pentru 'room'?

Nu. Poți face POST sau GET sau îl poți îngloba în URL. Altă opțiune nu există.

> O a doua problema nu tine neaparat de axaj ci tine de o problema putin mai
> delicata, cred:). Cate chat-uri private vor putea exista in acelasi moment?
> (eu unul ziceam ca ar trebui sa existe in jur de 4-5, astfel incat sa ocupe
> la fel ca la gmail partea de jos a paginii si sa nu arate foarte urat..)
> Si daca fac un numar maxim de chat-uri, as vrea sa stiu daca le generez
> sau le las statice si numai sa le fac sa apara cand este nevoie.

Nu limita, ar trebui să dai erori gen: "iulian nu poate răspunde la
chat, pentru că are prea multe ferestre deschise". Soluția trebuie să
fie alta, de îngrămădire, stacking sau minimize.

Alex


More information about the wouso-dev mailing list