Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  chat rakendus märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
geek
HV kasutaja

liitunud: 07.04.2004




sõnum 24.12.2012 14:12:24 chat rakendus vasta tsitaadiga

Kirjutan php ühte lihtsat chat'i rakedust. Andmete uuedamine käib kliendi poolelt ajaxiga abil.
Soov lisada sõnumite kusutamise funktsioon. Kuidas seda oleks mõislik teha? Just Kliendi poolelt ei suuda välja mõelda.
Kommentaarid: 42 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 41
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 24.12.2012 14:24:40 vasta tsitaadiga

Kui hoiad sõnumeid andmebaasis, siis sõnumi väljastusel html is lisad lingi sõnumi ID ga ning selle järgi saadki määrata sõnumi, mida kustutada. Kui on vaja, et kustutada saaks ainult see, kes saatis, tekitad andmebaasi ka IP lahtri ja lubad kustutada ainult neid, kelle IP on sama sõnumi saatja omaga. See, et asi AJAX aknas jookseb pole ju määrav, kui seal on link, millel küljes siis sõnumi ID ja kasutaja IP saad selle abil ju kustutamis koodi php s käima tõmmata, et mitte chat akent reload teha käivitad kustutamis koodi mõnes hidden frame sees.

Võid veel tekitada olukorra, kus IP järgi lisad kustuta lingid ainult kliendi sõnumitele, teised oleksid ilma linkideta.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
geek
HV kasutaja

liitunud: 07.04.2004




sõnum 24.12.2012 14:30:38 vasta tsitaadiga

Ole just hädas selle poolelega, kuidas sõnumi kustutamine kõigile ülejäänud chat'is olevatele nähtavaks teha.
Tavalised sõnumid teen kliendi poolelt nähtvaks qjuery appendi abil lisades uue div'i.
Kommentaarid: 42 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 41
tagasi üles
vaata kasutaja infot saada privaatsõnum
neros
HV Guru
neros

liitunud: 26.11.2003




sõnum 24.12.2012 16:43:17 vasta tsitaadiga

Sul on päris mitu võimalust. JQuery appendiga divi lisades annad divile näiteks id-attribuudi kus on sees "field-x" kus x on andmebaasist tulev ID. Kui saadad mingi päringu, saad päringule vastuseks näiteks "removed:x" ning siis lihtsalt $("#field-"+x).remove();

Sõltub ka muidugi sellest kuidas sul andmebaas tehtud on ning mismoodi täpselt andmete uuendamine käib. Kui jsoniga loogilisel kujul a la

{"added":[{"id":5,"value":"new message 1"},{"id":6, "value":"new message 2"}]}


Sinna on väga lihtne "removed" sisse lükata. Pead muidugi meeles pidama uuendamise kellaajad andmebaasis ja ID järgi otsimise asemel hoopis timestampi kaasa panema ja sealt siis vaadata mille changed väljad on uuemad kui request. Paremini oskaks aidata kui teaks su uuendusskripti.

_________________
GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt.
Kommentaarid: 48 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 24.12.2012 17:03:55 vasta tsitaadiga

Oled asja vist liialt keerukalt lahendanud. Kontrollid alati, kas sõnum on juba ekraanil ja loed siis ainult neid, mis juurde on tekkinud?
Lihtsam oleks lugeda kõik sõnumid alates ajast, mil ise liinile läksid. Siis oleks kogu su sõnumimajandus ühel php lehel koos ja kustutus lingid ning muu kammajjaa ka seal. Kui nüüd andmebaasist sõnum maha läheb, siis järgmise reloadimise käigus teda seal lihtsalt pole ja pole ka midagi vahelt vaja keeruliselt maha kustutada.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
neros
HV Guru
neros

liitunud: 26.11.2003




sõnum 24.12.2012 20:59:31 vasta tsitaadiga

Andrus, sellega on see probleem, et ta tekitab piisavalt trafficut. Ühe rea laadimine võtab kõvasti vähem bandi kui terve krempli sikutamine. Longpolli või socketitega võib ka tavalise poll-404-poll-404-poll-200-load-skeemi ära unustada. Väikekasutajal üldiselt BW pärast muretseda tarvis ei ole, kuid tuleviku tarviks võib päris kasulik harjutus olla. Eriti nukker on terve lehe laadmine just telefonide puhul - pigem tõmmata ainult uuemad sõnumid kui kõik mis olemas on.

Üldiselt on mingisugune optimisatsioon brauseri poole pealt tarvilik. Ajax ei ole miski mis loodi ainult selleks, et lehti peaks vähem refreshima ja kõik oleks dünaamilisem - ei, seal on ka bandwidthi ja üldise serveriressursi säästmise nõks sees. Üks request mis tagastab JSONit annab kliendimasinale selle loetavaks vormindamise ülesande, on vähem mahukam ning annab serverile vähem koormust.

_________________
GitHub
.NET Core & Azure baasil lahendused ja arhitektuur - kontakt.
Kommentaarid: 48 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  chat rakendus
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.