login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Chat

Offline Erwt - 28/03/2009 19:16 (laatste wijziging 29/03/2009 19:07)
Avatar van ErwtPHP beginner Hey allemaal,

Ik wil graag het volgende realiseren:

Een inlogsysteem waar je kan inloggen,registreren voor alle bezoekers. Daarna kan je in je friendlist vrienden toevoegen, waarna een invite gestuurd moet worden gestuurd naar die vriend, die hem moet accepteren. Die invite moet dus real-time worden weergegeven, en niet pas na re-log. Dan moet je ook in je vriendenlijst kunnen zien wie online en wie offline zijn.

Probleem:
Wanneer ik ingelogd ben wil ik niet pas hoeven te refreshen voordat ik een friend-request krijg, een chat-message binnen krijg of iemand on- of offline gaat. Dit wil ik dus real-time verwerken zonder dat daarbij de pagina gerefreshed moet worden (ajax dus, maar hoe?).

Stel ik heb een lastonline DATE field in mijn database, en ik vergelijk die met now(). Stel dat ik mijn friend-list base op het feit dat iedereen die 3 minuten geleden nog online was dan ook online is.. maar als je dan wilt chatten met die persoon, is hij in feitte al offline.. ik snap niet hoe ik dat op moet lossen.

10 antwoorden

Gesponsorde links
Offline Joost - 28/03/2009 20:14
Avatar van Joost PHP expert Alhoewel ik je probleem niet echt begrijp, heb je denk ik AJAX i.c.m. setTimeout() (JavaScript) nodig.. 
Offline Erwt - 29/03/2009 19:04 (laatste wijziging 29/03/2009 19:07)
Avatar van Erwt PHP beginner Ja zoiets had ik al begrepen inderdaad, ik zal mijn topic even aanpassen om mijn probleem goed te beschrijven.

edit: Topic aangepast
Offline Martijn - 29/03/2009 19:32
Avatar van Martijn Crew PHP wat je kunt doen voor je berichtgeving is niet zo lastig.

Je maakt een divje met id msg ofzo, daar laat je via ajax bericht_controle.php steeds zn gang in gaan.

Bericht_controle.php kijkt in je database of er iets nieuws is, zo nee echo niets, zo ja echo in javascript een alert(" je hebt een nieuw verzoekie");

ét voila 
Offline cyberninjah - 29/03/2009 19:37
Avatar van cyberninjah Lid Ik ben momenteel bezig met een Chat te maken met jquery

voor de refresh van de teksten doe ik het volgende

  1. function updateMsg() {
  2. $.post("backend.php",{ time: timestamp }, function(xml) {
  3. $("#loading").remove();
  4. addMessages(xml);
  5. });
  6. setTimeout('updateMsg()', 4000);
  7. }


Mischien dat je er wat aan heb
Offline Erwt - 29/03/2009 20:18
Avatar van Erwt PHP beginner Ik denk zelf dat ik meer opzoek ben naar het geen wat elke 'seconde??' kijkt in de database bijv.

Wordt de webapplicatie niet loeizwaar als ik elke seconde via AJAX loop te kijken of ik nog een open-request heb via SQL? Dat betekend 1 query / sec.
Offline Joost - 29/03/2009 22:08 (laatste wijziging 29/03/2009 22:09)
Avatar van Joost PHP expert
Erwt schreef:
Ik denk zelf dat ik meer opzoek ben naar het geen wat elke 'seconde??' kijkt in de database bijv.

Wordt de webapplicatie niet loeizwaar als ik elke seconde via AJAX loop te kijken of ik nog een open-request heb via SQL? Dat betekend 1 query / sec.
Dat hangt er natuurlijk vanaf hoeveel mensen op je site zitten en wat voor servers je hebt. Wanneer je wilt checken of je een nieuw bericht, lijkt me eens per 10 seconden al ruim zat.
Goede servers kunnen echter wel een hoop queries aan per seconde, onderschat dat niet. Maak er alleen geen overkill van, en belaad het zo zwaar als nodig is.
Offline Erwt - 30/03/2009 13:50 (laatste wijziging 31/03/2009 09:10)
Avatar van Erwt PHP beginner Ok dus mijn totaalvraag:

Ik moet dus met behulp van Javascript om de 10 seconden een SQL query sturen naar PHP(via ajax dus).

Dan moet ik dus om de 10 seconden kijken of ik een nieuwe friend-request heb.

En bij de chat, als ik een nieuw bericht binnen krijg moet het om de 10 seconden zijn.. is het dan een 'goed' idee dat wanneer er nog een chatvenster open staat, hij elke 2 seconde kijkt naar een nieuw bericht? Want een chatbericht moet eerder binnen zijn dan een friend-request.. lijkt me?

Vanaf nu ga ik dus via bovenstaande situatie werken, mocht iemand een ander idee hebben of gewoon weten dat het anders moet.. dan hoop ik nog iets te horen!

Alvast bedankt allemaal

Edit:

Ik krijg dus zometeen allemaal ajax functies die checken op:
- friend request (1 x per 10 seconden)
- on/offline van gebruikers (1 x per ?? seconden)
- chatmessages (1x per 1/2 seconden)

Wordt het dan niet een beetje HEEL erg zwaar? is daar niet een soort van engine voor te maken. Want ik krijg dan wel heel vaak een GET request..

En bij andere websites zie ik ook niet zoveel van die REQUESTS..
Offline Ibrahim - 31/03/2009 10:13
Avatar van Ibrahim PHP expert Je kunt een query best wel een groot aantal keer uitvoeren. Daar moet je je niet druk om maken.
Offline Erwt - 31/03/2009 12:56 (laatste wijziging 31/03/2009 12:57)
Avatar van Erwt PHP beginner Bij deze zal ik me er niet druk om maken maar mijn vraag naar een 'beter' antwoord is er nog wel. Is er bijv. een engine voor of iets dergelijks?

En kan ik met één instantie (die ik in het begin direct aanmaak) ook meerdere en verschillende ajax-requests doen?

Voor de rest bedankt voor de moeite!
Offline Ibrahim - 31/03/2009 16:20
Avatar van Ibrahim PHP expert Ik heb het verkeerd gezegd: het feit dat je veel queries mag maken, betekent niet dat je dat moet doen.

Het gaat wel een probleem vormen bij xxxxx aantal mensen tegelijkertijd. Dan zou ik een dedicated server nemen. Maar zo ver zal het niet gaan denk ik 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.183s