FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Hej,
Jag har gjort en liten shoutbox där man även ser vilka som är inne på shoutboxen. För att vet vilka som är inne kollar jag först på varje sida om sidan man är inne på är /chat.php vilket jag får ifrån PHPs konstant $_SERVER["PHP_SELF]. Om man då är på /chat.php så flaggar jag en kolumn till 1 som heter "in_chat" på användarens rad i databasen. Med AJAX hämtar jag nu alla rader i medlemslistan är in_chat = 1. Detta funka då fin fint tills en användare bestämmer sig för att öppna en ny tab. Då slinker han ut ur chattsidan eftersom in_chat ändras till 0. Vad ska jag göra för att motverka det här? Du kan testa det här: http://www.muggem.com/ Logga in med muggem/muggem. Sidan heter "Shoutbox" som ni hitter i menyn till vänster. |
||
![]() |
![]() |
![]() |
#2 | |||
|
||||
Medlem
|
Vet inte om jag riktigt förstått det hela rätt, när jag prövar att öppna en ny flik stannar jag fortfarande kvar på shoutbox-sidan? D.v.s "muggem" username står kvar i "in chat" och klockan fortsätter ticka?
Men ett alternativ är väl att skapa en cookie med hjälp av jquery som finns en begränsad tid, och när användaren tabbar tillbaka till fliken så förnyas cookien. Men om användaren inte tabbar tillbaka under låt oss säga 10 minuter så försvinner cookien och "in_chat" sätts till 0 via en ajax-kontroll som kollar om användaren har kakan eller ej. Kanske är helt missuppfattat, isåfall ber jag om ursäkt! |
|||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Jag menade att man på den andra fliken går till en helt annan sida
![]() |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Medlem
|
Ah ok.
![]() Då skulle jag nog isåfall kört med en cookie som sparas i typ 10 minuter, som förnyas när man är inne på shoutboxen. Sen ett ajax-anrop som med jämna mellanrum kontrollerar ifall den finns eller ej. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Gör det lätt för dig istället.
Gör en MEMORY tabell som heter tex InChat där du helt enkelt bara lagrar AnvändarID, och datetime eller whatever, besöker då användaren chat.php så lägg bara in en rad i tabellen, sen kan du bestämma hur länge en besökare skall kunna vara inaktiv innan raden tas bort från databasen, tex 20 minuter, så ta bort alla rader i databasen där datetime är äldre än 20 minuter. Tar 1 minut att skapa tabellen i databasen och tar 1 minut att ändra dina redan befintliga queries |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Du borde kolla upp longpulling och websockets, med dessa kan du omedelbart få reda på om någon lämnar sidan.
|
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
har gått över till nodejs istället
![]() ![]() |
||
![]() |
![]() |
Svara |
|
|