They use socket connections more than likely. Thats the other alternative you can use but does mean setting up a socket server.
One caveat with the technique I mentioned ... If your application gets really busy you will have a lot of traffic happening between client and server. On Tue, Jan 18, 2011 at 9:16 AM, Srivatsa Prasad <srivatsa6...@gmail.com>wrote: > Hi, > > That should do the trick for me. > > I wonder how gmail or facebook do this. > > > On Tue, Jan 18, 2011 at 12:38 PM, Gareth McCumskey > <gmccums...@gmail.com>wrote: > >> The best you can do is try to use javascript to catch an event of the >> person leaving the page (http://api.jquery.com/unload/). the problem as >> that link suggests is that its also browser dependant. Some browsers >> implement only parts of that event. For example, some browsers do not fire >> the unload event on browser closing but do on changing url in the tab etc. >> Its a very tricky thing to do. >> >> The best way I can think of is have a periodic ajax request fire every 1 >> minute or or so. This ajax event updates the users "last active" time. All >> other users IM client can then update the currently online people to be >> those whose last active time was updated in the last minute. In other words, >> if I am a user who has a list of currently logged in people, and my friend >> has his browser open, he sees me online. My browser is regularly sending the >> a small ajax request to the server telling it that at time now I am online. >> My friends browser checks to see who is online every minute as well. I close >> my browser and now my last active time is not being changed. My friends >> browser gets the list of people online and sees that my last active time is >> now longer than a minute ago therefore I must be offline. >> >> >> On Tue, Jan 18, 2011 at 8:19 AM, Srivatsa Prasad >> <srivatsa6...@gmail.com>wrote: >> >>> Hi, >>> >>> Thank you for the response. >>> >>> The scenario u mentioned below, I see one issue, which cannot be handled. >>> >>> I think of using the database to see who are all the logged in users, i >>> do it at the time when they log-in. I can mark them as logged out if they >>> log out, >>> >>> The problems i foresee are, >>> 1 The user session doesn't expire since the page makes a request in a >>> certain interval. I don't mind if the session doesn't expire. >>> 2 The other issue is if the user closes the browser or the user losses >>> connectivity, i am not sure how to handle this situation , how to notify >>> other users that an other user has logged out ? >>> >>> If u could give me some idea on the 2nd issue, i will take it further . >>> >>> >>> >>> >>> >>> >>> On Mon, Jan 17, 2011 at 5:50 PM, Gareth McCumskey >>> <gmccums...@gmail.com>wrote: >>> >>>> This is very commonly asked and the simple answer is .... its rather >>>> difficult. >>>> >>>> Its difficult because when someone logs into an application, this fact >>>> is stored server-side where all the PHP code exists. Lets consider a >>>> scenario. You have an application to which people need to log into. Your >>>> session timeout (i.e. how long you allow someone to stay logged in with no >>>> interaction) is set to 30 minutes. Someone comes along and logs in. When he >>>> logs in you can record the exact time he logged in. Everytime this user >>>> accesses a page that calls your application you can update that timestamp >>>> to >>>> confirm him as still online. But then the requests (i.e. clicking of links, >>>> form submission, etc) stops, and 30 minutes later the session timesout. >>>> >>>> The problem? What if he had closed his browser and not clicked the >>>> logout link? Was he actually still sitting in front of his computer when >>>> his >>>> session ended? At what time in those last 30 minutes of inactivity was he >>>> still there? When did he close the browser? >>>> >>>> You don't know. Closing the browser is something you cannot determine, >>>> even using javascript. >>>> >>>> The only way to reliably do this is to have some ajax sitting in the >>>> application that sends a request every few minutes that can verify that the >>>> person is still there and his browser is still open. The downside is that >>>> his session will never timeout on its own (as each little ajax request will >>>> reset the internal PHP session timer) and you will have to build your own >>>> session timeout mechanism from scratch to force a "logout" when it does >>>> timeout. >>>> >>>> On Mon, Jan 17, 2011 at 1:49 PM, Srivatsa Prasad < >>>> srivatsa6...@gmail.com> wrote: >>>> >>>>> Hi All, >>>>> >>>>> I am using symfony 1.4 and doctrine. >>>>> I am trying to build a small chat app so, >>>>> I want to know who are all the user of my app logged into to at now. >>>>> >>>>> -- >>>>> Thanks & Regards >>>>> Srivatsa >>>>> >>>>> -- >>>>> If you want to report a vulnerability issue on symfony, please send it >>>>> to security at symfony-project.com >>>>> >>>>> You received this message because you are subscribed to the Google >>>>> Groups "symfony users" group. >>>>> To post to this group, send email to symfony-users@googlegroups.com >>>>> To unsubscribe from this group, send email to >>>>> symfony-users+unsubscr...@googlegroups.com<symfony-users%2bunsubscr...@googlegroups.com> >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/symfony-users?hl=en >>>>> >>>> >>>> >>>> >>>> -- >>>> Gareth McCumskey >>>> http://garethmccumskey.blogspot.com >>>> twitter: @garethmcc >>>> identi.ca: @garethmcc >>>> >>>> -- >>>> If you want to report a vulnerability issue on symfony, please send it >>>> to security at symfony-project.com >>>> >>>> You received this message because you are subscribed to the Google >>>> Groups "symfony users" group. >>>> To post to this group, send email to symfony-users@googlegroups.com >>>> To unsubscribe from this group, send email to >>>> symfony-users+unsubscr...@googlegroups.com<symfony-users%2bunsubscr...@googlegroups.com> >>>> For more options, visit this group at >>>> http://groups.google.com/group/symfony-users?hl=en >>>> >>> >>> >>> >>> -- >>> Thanks & Regards >>> Srivatsa >>> >>> -- >>> If you want to report a vulnerability issue on symfony, please send it to >>> security at symfony-project.com >>> >>> You received this message because you are subscribed to the Google >>> Groups "symfony users" group. >>> To post to this group, send email to symfony-users@googlegroups.com >>> To unsubscribe from this group, send email to >>> symfony-users+unsubscr...@googlegroups.com<symfony-users%2bunsubscr...@googlegroups.com> >>> For more options, visit this group at >>> http://groups.google.com/group/symfony-users?hl=en >>> >> >> >> >> -- >> Gareth McCumskey >> http://garethmccumskey.blogspot.com >> twitter: @garethmcc >> identi.ca: @garethmcc >> >> -- >> If you want to report a vulnerability issue on symfony, please send it to >> security at symfony-project.com >> >> You received this message because you are subscribed to the Google >> Groups "symfony users" group. >> To post to this group, send email to symfony-users@googlegroups.com >> To unsubscribe from this group, send email to >> symfony-users+unsubscr...@googlegroups.com<symfony-users%2bunsubscr...@googlegroups.com> >> For more options, visit this group at >> http://groups.google.com/group/symfony-users?hl=en >> > > > > -- > Thanks & Regards > Srivatsa > > -- > If you want to report a vulnerability issue on symfony, please send it to > security at symfony-project.com > > You received this message because you are subscribed to the Google > Groups "symfony users" group. > To post to this group, send email to symfony-users@googlegroups.com > To unsubscribe from this group, send email to > symfony-users+unsubscr...@googlegroups.com<symfony-users%2bunsubscr...@googlegroups.com> > For more options, visit this group at > http://groups.google.com/group/symfony-users?hl=en > -- Gareth McCumskey http://garethmccumskey.blogspot.com twitter: @garethmcc identi.ca: @garethmcc -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en