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 :

pseudo Push flex/php et problème avec URLloader [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 : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut pseudo Push flex/php et problème avec URLloader
    Bonjour à tous,
    Dans le cadre d'un nouveau projet, je souhaite mettre en place une solution où le serveur (php) envoie aux différents clients flex des informations (mises à jour par d'autres clients).

    Connaissez-vous des frameworks (comme Zend AMF ) par exemple permettant d'effectuer des opérations push ?

    J'en suis au début de mes recherches donc il y a peut-être une solution évidente qui m'a passé sous les yeux.

    Bonne journée et merci pour vos réponses.

  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,

    Le push de données dans flex se fait via la fonctionnalité de Messaging du framework.
    A ma connaissance elle n'est utilisable que via BlazeDS ou bien LCDS et requiert que le code coté serveur soit fait en Java...
    PHP ne me permet pas de faire du "push de données" à proprement parler dans Flex. Tu peux le simuler en mettant un Timer() qui va appeler régulièrement le serveur pour recevoir les nouvelles données.
    Si Flex n'est pas une contrainte métier ou client, je te recommande de faire des recherche sur le projet APE (Ajax Push Engine) qui à défaut de faire du push dans flex pourra le faire avec du PHP et du Javascript.
    Si l'anglais ne te fais pas peur je te donne un article qui te donneras la liste des technologies permettant de faire du push dans flex:
    http://raghuonflex.wordpress.com/200...-with-backend/

  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 : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut
    merci pour ces précisions Maskime.
    Helas, le choix des technologies n'est pas une option. Sinon j'aurais opté pour un serveur java.
    J'envisage sérieusement l'appel avec un timer mais je continue de chercher d'autres alternatives, notamment du côté du projet CometD mais je ne suis pas sûr que cela réponde à mon besoin.

    Si je trouve quelque chose de bien, je viendrais en toucher un mot ici.

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut
    Bon, je n'ai pas trouvé de solution élégante.

    Je suis donc passé au plan B :

    1 - Une méthode envoie, via amfphp, la date création du fichier que je souhaite télécharger. (ou 0)
    Si la date de création est différente, php renvoie l'url du fichier à telecharger.

    2 - Si Flex reçois une URL en réponse, il lance le téléchargement via l'objet URLLoader. Il lance aussi une requête AMF pour récupérer la date de création du fichier en cours.

    Ces deux étapes tournent en boucle via la méthode setInterval (qui est arrêté et relancé à chaque étape critique).

    Maintenant je tombe sur un problème incompréhensible :
    Lors de l'appel via URLLoader du fichier, même si ce dernier à été modifié côté serveur, j'obtiens le même contenu que lors du premier appel.

    Peut-être qu'un peu de code vous aidera à comprendre :

    Fonction appelée à chaque fois qu'un changement est observé côté serveur :
    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
     
    private function onUpdateResult (aResult : String) : void
    {
    	if (aResult != ATCommunicationConstants.NO_CHANGES_ON_SERVER)
    	{
    		this._remoteObject.getFileCreationDate(onGetCreationDateResult) ;
     
    		this.request = new URLRequest(aResult) ;
    		this.xmlLoader = new URLLoader() ;
     
    		xmlLoader.addEventListener(Event.COMPLETE , onXMLReceptionComplete);		
     
    		xmlLoader.load(request);
    	}
    	else
    	{  }
    }
    aResult est l'url du fichier à telecharger (http://monsite/monfichier.xml)

    Fonction appelée lors de la reception du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private function onXMLReceptionComplete (AEvent : Event) : void
    {
    	var xmlData : XMLDocument = new XMLDocument(AEvent.currentTarget.data);
    	var xmlDecoder : SimpleXMLDecoder = new SimpleXMLDecoder() ;
    	var data : Object = xmlDecoder.decodeXML(xmlData);
    	var xmlArray : Array = ArrayUtil.toArray(data.users.user) ;
     
    	this._gridContent.removeAll();
    	this._gridContent = new ArrayCollection (xmlArray); 
    	this.xmlDisplay.dataProvider = this._gridContent ;
     
    	setInterval(updateXML , MILLISEC_DELAY);
    }
    Le contenu de AEvent.currentTarget.data est TOUJOURS le même qu'au premier appel.

    Si quelqu'un à une piste de réflexion à proposer, je suis preneur.

  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 : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Points : 100
    Points
    100
    Par défaut
    edit : problème résolu.

    Lors de l'envoi de l'URL, je rajoute la date de création du fichier et paf, la magie s'opère :

    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
    24
    25
    26
    27
    28
    29
     
    /**
     * 	@desc : compare the creation date of a file (from the client) with a file on the server. 
     *  @access : remote
     *  @returns : the url of the file to load, else 0
     *  @pagesize : yes
     */
    function checkIfFileIsUpdated ($aCreationDate)
    {
    	$filePath = "/fileUpdate/test.xml";
    	$result = "noChange" ;
     
    	if ($aCreationDate == null )
    	{
    		$result = ("http://".$_SERVER['SERVER_ADDR'].$filePath);
    	}
    	else
    	{
    		$file = $_SERVER['DOCUMENT_ROOT'].$filePath ;
    		if (file_exists($file))
    		{
    			$fileCreationDate = filemtime($file);
    			if ($aCreationDate != $fileCreationDate)
    			{ $result = "http://".$_SERVER['SERVER_ADDR'].$filePath.'?'.filemtime($file) ; }
    		}
    	}
     
    	return $result ;
    }

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

Discussions similaires

  1. [PHP-JS] Problème avec un script php d'un formulaire
    Par Dark DJ dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2006, 19h36
  2. [PHP-JS] Problème avec hidden ?
    Par samjung dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2006, 17h07
  3. [PHP-JS] Problème avec les $_GET J'en peux plus la
    Par schtek2 dans le forum Langage
    Réponses: 8
    Dernier message: 21/05/2006, 20h56
  4. [PHP-JS] Problème avec un menu déroulant
    Par grumly22 dans le forum Langage
    Réponses: 3
    Dernier message: 09/05/2006, 11h07
  5. [PHP-JS] problème avec le flush
    Par bat dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2005, 15h03

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