Jump to content

Is Client Still There?


imperium2335

Recommended Posts

Hi,

 

I am building a simple AJAX chat system, but I have thought of an issue.

 

What if a user pulls the plug on the connection for whatever reason (powercut etc), how will my system know to remove their "active users" entry in my DB and thus show them as no longer in the chat?

 

Is there a way to check for a client of a given IP address taking part in an AJAX request? So I could have something where if no AJAX request was made in 10 seconds, they must have disconnected?

 

Any help or advice is much appreciated!

Link to comment
https://forums.phpfreaks.com/topic/243381-is-client-still-there/
Share on other sites

Just ask them

 

All jokes aside! Yes, you would poll your server every n seconds to fetch the new contents and update their status, anyone where the delta between last update time and the current time exceeds the idle time is considered offline. Preferably you should return this to any active clients so they can update their list of users in the chat.

Thanks for the reply!

 

Yes I already have something that deletes a user if no activity after 30 minutes, but I want to know if there is a way to detect if they have hard disconnected. I thought about pinging the clients IP address using phps exec() function but I hear not everyone on the net is pingable. What do you think?

Pinging won't solve anything. Pinging only means that the host is reachable not that they are still chatting. So no, there is no real way except maybe using the onunload event of which I'm unsure if it triggers correctly on all browsers/platforms.

 

What you actually need is a socket which is available as of HTML5: WebSockets, you can find a tutorial of how to use it on NetTuts+

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.