2009-08-22 6 views
1

Je développe une application de chat relais, divisée en 2 volets.comment notifier le serveur web lorsque l'utilisateur ferme le navigateur (dans asp.net)?

volet droit -> Les réponses de chat des utilisateurs (ce qui utilise un contrôle Label ASP.NET multiligne placé à l'intérieur du panneau de mise à jour, alors quand tous les types d'utilisateurs les réponses et le soumet est ajouté à ce contrôle)

gauche panes -> la liste des utilisateurs actuellement en ligne (ceci utilise le contrôle de liste ASP.NET qui est également placé dans le panneau de mise à jour). Ci-dessous est la zone de texte pour l'utilisateur d'entrer du texte et un bouton d'envoi pour poster sa réponse.

tout fonctionne bien. Mais lorsque l'utilisateur ferme la fenêtre du navigateur au lieu de cliquer sur le bouton de déconnexion. la liste sur le volet gauche n'est pas actualisée.

Cela se produit correctement lorsque l'utilisateur se déconnecte.

Est-il possible de supprimer le nom d'utilisateur de la liste si l'utilisateur ferme le navigateur (avant même que sa session ait expiré côté serveur)?

désolé je ne pouvais pas exposer la capture d'écran. Est-ce que quelqu'un peut suggérer une idée avec un exemple de fragment de code?

grâce

vijay

Répondre

2

Vous pouvez use Javascript to detect when the browser has been closed, puis le coup d'envoi d'une requête AJAX au serveur avertissant que l'utilisateur a quitté.

+0

@bcwood. Il se déclenche à chaque fois qu'un utilisateur passe à une autre page. Je ne pense pas qu'ils seront en mesure d'utiliser de manière fiable pour détecter que l'utilisateur ferme le navigateur de la lecture de ce forum. Ai-je manqué quelque chose? – klabranche

+0

@klabranche mais si elles s'éloignent de la page en cours, elles ont quitté l'application de chat, ce qui pourrait aussi bien être la même chose que la fermeture de leur navigateur. –

3

Vous pouvez le faire dans l'autre sens: envoyez un ping au serveur à partir du navigateur avec un appel ajax périodiquement. Si aucun ping reçu, supprimez l'utilisateur.

+1

J'ai essayé ça. il semble que nous sondons et que boit l'effieciency. – vijaysylvester

+1

Je pense que c'est le seul moyen fiable. Vous pouvez le rendre plus efficace si vous effectuez un ping seulement si l'utilisateur n'a envoyé aucun message pendant un temps donné. Aussi pour les utilisateurs inactifs, vous pouvez augmenter dynamiquement l'intervalle de temps après chaque ping. – Zed

Questions connexes