I have a forum page. On the only index page, I show an online user list that shows usernames. I use Pusher. It works great. I have a problem about which my customer is complaining. The problem is that when a user browses to other pages, his/her username disappears and re-appears again. His/her connection to Pusher is lost on every page move. How can I handle this situation? Is there any other solution to list online users? I don't want to use a classic AJAX-based solution.
An example solution for this can be found on the Pusher Support page. They suggest you buffer user offline events and discard if the user rejoins after a short amount of time. The example code provided is:
function removeMember(member) {
pendingRemoves[ member.id ] = setTimeout(function() {
removeMemberFromUI(member);
}, 3000); // wait 3 seconds
};
function addMember(member) {
var pendingRemoveTimeout = pendingRemoves[member.id];
if(pendingRemoveTimeout) {
// user left, but has rejoined
clearTimeout(pendingRemoveTimeout);
}
}