Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2010, 12h34   #1
Membre du Club
 
Avatar de ouaqa
 
Aurélien Bénéfice
Développeur Web
Inscription : avril 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Aurélien Bénéfice
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 95
Points : 65
Points : 65
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 :
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).
ouaqa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 16h51   #2
Membre habitué
 
Maxime Faye
Développeur Web
Inscription : novembre 2006
Messages : 123
Détails du profil
Informations personnelles :
Nom : Maxime Faye
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2006
Messages : 123
Points : 129
Points : 129
Envoyer un message via MSN à Maskime Envoyer un message via Skype™ à Maskime
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..."
Maskime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 12h06   #3
Membre du Club
 
Avatar de ouaqa
 
Aurélien Bénéfice
Développeur Web
Inscription : avril 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Aurélien Bénéfice
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 95
Points : 65
Points : 65
Bonjour maskime,

j'opte pour la reponse 2 :
Citation:
"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.
ouaqa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 14h50   #4
Membre habitué
 
Maxime Faye
Développeur Web
Inscription : novembre 2006
Messages : 123
Détails du profil
Informations personnelles :
Nom : Maxime Faye
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2006
Messages : 123
Points : 129
Points : 129
Envoyer un message via MSN à Maskime Envoyer un message via Skype™ à Maskime
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..."
Maskime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 15h44   #5
Membre du Club
 
Avatar de ouaqa
 
Aurélien Bénéfice
Développeur Web
Inscription : avril 2009
Messages : 95
Détails du profil
Informations personnelles :
Nom : Aurélien Bénéfice
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2009
Messages : 95
Points : 65
Points : 65
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.
ouaqa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2010, 17h36   #6
Membre habitué
 
Maxime Faye
Développeur Web
Inscription : novembre 2006
Messages : 123
Détails du profil
Informations personnelles :
Nom : Maxime Faye
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2006
Messages : 123
Points : 129
Points : 129
Envoyer un message via MSN à Maskime Envoyer un message via Skype™ à Maskime
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..."
Maskime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h09.


 
 
 
 
Partenaires

Hébergement Web