Angulaire 2 - Exécuter du code lors de la fermeture de la fenêtre
Je suis en train de travailler sur une application de chat en utilisant angulaire 2.
Comment puis-je envoyer de l'arrivée de chat de commande à l'arrière-plan lorsque l'utilisateur ferme la fenêtre?
Mon composant a une méthode qui appelle le service principal pour mettre fin à la conversation de la manière suivante
JS:
endChat() {
this.chatService.endChat(this.chatSessionInfo).subscribe(
result => this.OnGetMessages(result),
error => this.OnChatEndError(error)
);
}
Comment puis-je exécuter ce code lors de la fermeture de la fenêtre? Comment puis-je détecter la fermeture de fenêtre de l'événement?
J'ai essayé avec ngOnDestroy mais pour une raison quelconque, le code n'est pas exécuté.
Dans mon Composant.ts j'ai.
import { Component, OnInit, AfterViewChecked, ElementRef, ViewChild,OnDestroy} from '@angular/core';
export class ChatComponent implements OnInit, AfterViewChecked,OnDestroy {
et enfin
ngOnDestroy() {
this.endChat();
}
Merci!
- Avez-vous mis en œuvre le backend avec la prise.io?
- Non, je suis en utilisant WebApi 2
- Je ne sais pas comment vous avez branché votre chat dans le fond, mais je vous suggère d'utiliser
SignalR
quelque chose comme un chat. Lors de la déconnexion, il y aura a tiré un événement sur le serveur. Jetez un oeil ici pour un exemple: github.com/FabianGosebrink/... - utilisation de jquery pour vérifier cette réponse stackoverflow.com/questions/1631959/...
- Je suis à l'aide d'une douille.io. Avez-vous un socket.io solution spécifique pour cela?
- Non, j'irais avec Günter la réponse! MAIS si vous avez juste besoin d'exécuter du code sur votre arrière-plan, puis il y a le
'disconnect'
événement.
Vous devez vous connecter pour publier un commentaire.
Merci à tous pour l'aide. J'ai été en mesure de créer une solution basée sur proposition différente.
J'ai d'abord utilisé le beforeunload événement dans le composant
où
Alors, l'astuce est de faire de l'appel http sync pas async.
Avant, le endchat méthode au service de chat a été
J'ai été capable de le faire fonctionner avec
Espérons que cette aide!
new XMLHttpRequest()
dans tous les navigateurs?Voir aussi javascript pour vérifier lorsque la fenêtre du navigateur est proche
@HostListener('window:unload', ['$event'])
ne fonctionne pas pour moi (Angular2 v2.4.6) pour afficher la boîte de dialogue de confirmation par le réglage de lae.returnValue
. Ce n'était@HostListener('window:beforeunload', ['$event'])
, cependant.