Comment suivre le statut en ligne des utilisateurs de mon site Web?
Je veux suivre les utilisateurs qui sont en ligne à l'instant.
La définition de l'être en ligne, c'est quand ils sont sur la page d'index du site
a la fonction de chat.
Jusqu'à présent, tout ce que je peux penser est la définition d'un cookie pour l'utilisateur et, lorsque le cookie est trouvé sur la prochaine visite, un appel ajax est fait pour mettre à jour une table avec leur nom d'utilisateur, leur statut en ligne et le temps.
Maintenant, ma question estcomment puis-je fiable de transformer leur statut de hors lorsqu'ils quittent
le site web? La seule chose que je peux penser à est de définir une quantité de temps prédéterminée d'aucune intervention de l'utilisateur, puis de définir le statut de hors.
Mais ce que je veux vraiment, c'est de conserver le statut sur tant qu'ils sont sur le site, avec ou sans interaction, et seulement aller à hors lorsqu'ils quittent le site.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Complète De La Solution. Départ-arrivée.
Si vous ne souhaitez que ce travail sur la index.php page, vous pouvez envoyer des mises à jour pour le serveur de façon asynchrone (AJAX) alerter le serveur qui
$_SESSION["userid"]
est toujours en ligne.Votre update.php fichier devrait avoir un peu de code comme ceci:
Tout cela suppose que vous stockez votre id d'utilisateur de la session variable lorsque les utilisateurs se connectent à votre site web. Le updateUserStatus() la fonction est juste une simple requête, comme suit:
Alors qui prend soin de votre espace de stockage. Maintenant pour récupérer la liste des utilisateurs qui sont "en ligne". Pour cela, vous aurez envie d'une autre jQuery-appel, et un autre appel setInterval ():
Cette fonction demande un peu de formulaire HTML, le serveur toutes les 10 secondes. L'getList.php la page devrait ressembler à ceci:
Qui donnerait le code HTML suivant:
Cette liste est inclus dans votre jQuery variable nommée "liste". Regarder en arrière dans notre dernier jQuery bloc et vous verrez qu'il n'.
jQuery va prendre cette liste et la placer à l'intérieur d'un div ayant la classe de "listBox".
Espère que cela va vous aller.
Dans le cas général, il n'y a aucun moyen de savoir quand un utilisateur quitte la page.
Mais vous pouvez faire des choses derrière les scènes telles qu'elles charger quelque chose à partir de votre serveur fréquemment alors qu'ils sont sur la page, par exemple. en chargeant un
<iframe>
avec un contenu qui recharge à chaque minute:Qui entraînera une petite charge supplémentaire sur le serveur, mais il va faire ce que vous voulez (si ce n'est pour la seconde).
Bien, la façon dont le chat de la fonction de travail? C'est un ajax basé sur un système de chat?
À base d'Ajax chat systèmes de travail par les clients constamment frapper le serveur de chat pour voir s'il y a des nouveaux messages dans la file d'attente. Si c'est le cas, vous pouvez mettre à jour l'utilisateur en ligne du statut soit dans un cookie ou une Session PHP (en supposant que vous utilisez PHP, bien sûr). Ensuite, vous pouvez définir la ligne délai d'attente pour quelque chose de plus que la fréquence de mise à jour.
Qui est, si votre système de chat généralement les demandes de nouveaux messages sur le serveur toutes les 5 secondes, alors vous pouvez supposer que tout utilisateur qui n'a pas envoyé une demande de 10 à 15 secondes n'est plus sur la page chat.
Si vous n'êtes pas à l'aide d'une base d'ajax système de chat (peut-être de Java ou de quelque chose), alors vous pouvez toujours faire la même chose en ajoutant une requête ajax qui va vers le serveur périodiquement pour établir si oui ou non l'utilisateur est en ligne.
Je ne voudrais pas suggérons de conserver ce statut en ligne de l'information dans une base de données. L'interrogation de la base de données toutes les deux secondes pour voir qui est en ligne et qui ne l'est pas est très gourmande en ressources, surtout si c'est un grand site. Vous devriez cache cette information et fonctionnent sur le cache (très rapide) par rapport à la base de données (très lent par comparaison).
La question est étiqueté comme "jquery" - à propos d'une solution d'activer javascript? Au lieu de meta/actualiser vous pouvez utiliser de la fenêtre.setInterval()effectuer une requête ajax-demander et fournir quelque chose "d'utile", comme par exemple une mise à jour "qui est en ligne" de la liste (si vous considérez qu'utile ;-))
Je n'ai pas essayé ce, afin de prendre cela avec un grain de sel: Définir un gestionnaire d'événement pour la fenêtre.onunload qui informe le serveur lorsque l'utilisateur quitte la page. Quelques problèmes avec ce sont: 1.) le cas ne se déclenche pas si le navigateur ou l'ordinateur se bloque, et 2.) si l'utilisateur dispose de deux instances de la page d'index de l'ouvrir et ferme, ils apparaîtront pour vous déconnecter, à moins que vous mettre en œuvre de comptage de référence. Cela n'est pas robuste, mais combiné avec Jonathan du mode de scrutin, devrait vous permettre d'avoir assez de bon temps de réponse et de plus grands intervalles entre les mises à jour.