IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Envoi d'une page à plusieurs clients


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut [C#] Envoi d'une page à plusieurs clients
    Environnement: VS .NET 2002
    Framework: 1.0
    OS: Windows XP Professional 5.1.26

    Lorsqu'un évènement particulier survient au niveau global de l'application il faut que j'envoie une page aux clients concernés.

    Exemple : soit un site d'achats en lignes et parmi les clients connectés, certains demandent une information qui n'est momentanément pas disponible, une page d'attente les avertit. Un peu plus tard, l'information est disponible et, au niveau global (vraisemblablement de global.asax.cs) il faudrait:
    - repérer parmi les clients connectés, ceux qui sont en attente de cette information
    - leur afficher une page leur donnant l'information et les invitant à poursuivre

    J'imagine :
    - ajouter un objet au sessionState de chaque client et de le mettre à jour au fure et à mesure du déroulement de l'application, en particulier d'y indiquer l'état d'attente (pas de problème particulier)
    - lorsque nécessaire, récupérer la collection des sessionState des clients connectés, mais comment :
    - analyser chaque sessionState (pas de problème particulier)
    - pour chaque client en attente concerné, lui envoyer la page correspondante, mais comment :

    En résumé, il s'agit de réveiller (callBack) les clients en attente d'une information lorsqu'elle est disponible ou plus généralement lorsqu'un évènement survient.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Tu ne pourras pas obtenir ce que tu souhaites de la maniere dont tu le décris, tout simplement par ce que HTTP est un protocole déconnecté. Autrement dit un client te demande qque chose, tu lui réponds, ok. Mais impossible pour toi de contacter un client directement, la connexion n'est pas maintenue. A oublier donc la notion d'alerte au sens ou tu l'entends, genre alerte msn qd un ami se connecte.

    Par contre rien n'est perdu, j'imagine une autre maniere de voir la chose, qui ressemble beaucoup aux messages de ce forum que tu peux envoyer a un autre membre : qd un utilisateur U de ton appli demande une ressource R non disponible, tu retiens (en base de donnée surement) que U est en attente de R. Puis dans chaque page de ton appli, tu mets un petit user control qui va se charger de vérifier si l'utilisateur est en attente de ressources et si elles sont maintenant disponibles, si oui il lui affiche un message ou tout ce que tu veux lui indiquant que la ressource est dispo, et il indique en base de donnée que le message a été envoyé (pour ne pas le renvoyer).

    Du coup avec cette solution la "cinématique" devient :

    - l'utilisateur demande une page ou un truc non disponible
    - tu enregistres sa demande, et tu le rediriges vers une page expliquant le probleme
    - ton utilisateur continue de naviguer sur le site, ou bien il s'en va
    - pendant tout le temps de sa navigation (attention il faut qu'il se reauthentifie s'il s'est déconnecté de ton site) a chaque demande de page de sa part, tu vérifieras si une ressource qu'il avait demandé est de nouveau dispo, si oui il aura un message d'avertissment.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Meric pour tes renseignements, ils m'éclairent sur le fait qu'il n'est pas possible d'envoyer un message aux clients en attente (call back) du fait du protocole déconnecté.

    Pour poursuivre le débat, jai deux remarques :

    - mon application se déroule dans un milieu industriel et lorsque la ressource n'est pas disponible, l'utilisateur ne visite pas d'autres pages mais se consacre à d'autres tâches en attendant d'être avertit et cela pendant une durée qui peut être très variable (1 minute, 1 heure voire plus). Pourrait-on imaginer que la page l'avertissant du manque de ressource sollicite automatiquement le serveur à interval régulier (je devrais rechercher sur les forum, je crois avoir vu une réponse à cette question); lorsque la ressource devient disponible, elle serait remplacée par la page ad-hoc

    - par ailleurs, pour savoir quels sont les clients concernés par le manque d'une ressource, j'avais imaginé ne pas pas réinventer la roue et utiliser un outil existant et propre, à savoir le "sessionState" qui lui même peut être sur base de donnée (sauf erreur) ; dans ce scénario, le serveur étant sollicité par le client, il peut facilement le récupérer

    Encore une fois, merci pour ton info

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lien vers une page contenant plusieurs frames
    Par sanginus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 16/05/2007, 12h17
  2. envoi d'une page avant sa generation complete
    Par khayyam90 dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2005, 13h06
  3. Fermer une page avec plusieur cadre
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo