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

Flex Discussion :

AMFPHP, Changer dynamiquement de channel [Flex3]


Sujet :

Flex

  1. #1
    Membre régulier Avatar de ouaqa
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut AMFPHP, Changer dynamiquement de channel
    Bonjour à tous,

    J'aurais souhaité savoir s'il était possible de définir des règles de changement de Channel (fallback policy) avec AMFPHP et des channels définis dynamiquement.

    Peut-être que ma question sera plus claire pour vous en voyant mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    private function initAMFCommunication() : void
    { 
    	channelInUse = ATChannelTypes.AMF_CHANNEL ;
     
    	var defaultDestination : String = ATCommunicationConstants.getApplicationContext() ;
    	defaultDestination += ATCommunicationConstants.AMF_DEFAULT_DESTINATION_URI ;
     
    	var adaptEasyDestination : String = ATCommunicationConstants.getApplicationContext() ;
    	adaptEasyDestination += ATCommunicationConstants.AMF_ADAPT_EASY_DESTINATION_URI ;
     
    	this.AMFDefaultDestination = new AMFChannel (ATCommunicationConstants.AMF_CHANNEL_NAME , defaultDestination ) ;
    	this.AMFAdaptEasyDestination = new AMFChannel (ATCommunicationConstants.AMF_CHANNEL_NAME , adaptEasyDestination ) ;
     
    	this.AMFChannelSet = new ChannelSet () ;
    	this.AMFChannelSet.addChannel(this.AMFDefaultDestination);
    	this.AMFChannelSet.addChannel(this.AMFAdaptEasyDestination);
     
    	this.AMFServerRemoteObject = new RemoteObject() ;
    	this.AMFServerRemoteObject.channelSet = this.AMFChannelSet ;
    	this.AMFServerRemoteObject.destination = ATCommunicationConstants.AMF_CHANNEL_NAME ;
    	this.AMFServerRemoteObject.showBusyCursor = true ;
    }
    J'ai donc définit deux objets AMFChannels, chacun avec une destination différente.

    En revanche, le remoteObject "n'attaque" que le premier channel. S'il ne reçois pas de réponse, il n'essaye pas avec le second channel.
    Je cherche dans la documentation flex mais pour l'instant sans résultat.

    Merci d'avance pour tout conseil utile (ou pas).

  2. #2
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Hello,

    Est ce que ta question est :
    "Est ce que Flex prévoit un comportement de fallback au cas où la destination du canal n'est pas disponible ?"
    Ou
    "Comment est ce que je peux faire pour changer automatiquement de canal si la destination ne réponds pas ?"
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  3. #3
    Membre régulier Avatar de ouaqa
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut
    Bonjour maskime,

    j'opte pour la reponse 2 :
    "Comment est ce que je peux faire pour changer automatiquement de canal si la destination ne réponds pas ?"
    Désolé de ne pas avoir été très clair.

  4. #4
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Hello,

    Pas de soucis

    Bon sinon comment est ce que tu pourrais faire pour qu'il change de channel automatiquement...
    Je suppose que pour commencer il faut que tu passes par une gestion des tes appelles aux remotes en AS pluôt qu'en MXML (question de préférence mais si tu vois comment faire ce que je vais te dire en MXML...)

    Alors, sans rentrer dans le détail (parce que ça pourrais carrément faire l'objet d'un article maintenant que j'y pense...)
    Il faut que tu centralises ta gestion des faultHandler() et que dans le cas où tu reçois une erreur qui indique que tu n'as pas eu de réponse de la part de la destination, il faut que ton faultHandler soit capable de :
    1. changer le channel
    2. rappeler le remote que tu viens d'appeler avec les params passés sur le nouveau channel

    Je sais pas si ce que je viens de te dire t'as vraiment aidé mais en réfléchissant un peu je me rends compte que ça peut vite devenir complexe de gérer ça dans Flex.

    Je ne connais pas ton besoin mais je me demande si ca serait pas plus simple de gérer ça côté serveur avec un système de grappe ou de load balancing...

    Maintenant si ce que je t'ai donné comme piste ne t'aide absolument pas parce que tu ne vois pas par où commencer revient me voir et on décortiquera le truc plus en profondeur.
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

  5. #5
    Membre régulier Avatar de ouaqa
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut
    hello (+1),

    pour commencer, ce bout de code est dans une classe AS, pas mxml. C'est un joli singleton s'occupant des interactions client/serveur via différents canaux.

    Sinon, je pensais opter pour une solution similaire (mais très simplifiée) à ce que tu propose :

    - lors de l'instanciation du canal, faire un appel via mon premier canal vers une méthode "Acknowledge" qui renverrais juste un booléen par exemple.

    - poser un result handler et surtout un fault handler, qui en cas d'erreur s'occuperait de changer le canal en cours.


    Dans mon contexte, je ne cherche pas à faire du load balancing, c'est juste que pour des raisons pourries, on a deux points d'accès et on le change à la compilation suivant le contexte dans lequel le projet est déployé.


    En fait je posais cette question parce que ça m'aurais embêté de réinventer la roue si ce genre de mécanisme était déjà intégré dans le remoteObject comme il est déjà intégré dans le paramétrage de LiveCycle (via le remoting-config.xml je crois).

    Merci en tout cas, je marque le sujet comme résolu parce qu'à mon avis il n'y a pas de meilleure alternative.

  6. #6
    Membre habitué
    Homme Profil pro
    Tech Lead
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Tech Lead
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 169
    Points
    169
    Par défaut
    Ok

    Désolé de pas avoir vu mieux
    Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes.
    Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..."

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

Discussions similaires

  1. Comment changer dynamiquement la valeur d'une option de DbGrid ?
    Par Atrebate62 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2005, 13h35
  2. Changer dynamiquement la couleur d'un item d'une listview
    Par little_cypress dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/11/2004, 14h46
  3. [JTextArea]changer dynamiquement le nombre de colonnes
    Par MrDuChnok dans le forum Composants
    Réponses: 9
    Dernier message: 27/04/2004, 13h31
  4. Réponses: 7
    Dernier message: 16/03/2004, 15h59
  5. Changer dynamiquement la position des onglets
    Par ginnovy dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/09/2002, 18h24

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