Forum: Rails France Ajax : asynchrones ?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
5183febd0dfb911f94c270ddd174fe71?d=identicon&s=25 guillaume belleguic (Guest)
on 2008-10-08 15:15
(Received via mailing list)
bonjour,
l'object Ajax.request permet de recevoir plusieurs réponse (Response
being
received (can occur many times, as packets come in)).

Certe mais comment faire pour que rails puisse envoyer plusieur réponse.

ex :
mon traitement 1
response "1er traitement ok"
mon traitement 2
response "2eme  traitement ok"

si vous avez une solution merci.
047a4fc673336a70a6b58338bc6d677d?d=identicon&s=25 Michel Belleville (Guest)
on 2008-10-08 15:33
(Received via mailing list)
Enchaîner plusieurs call ajax successifs, du genre :

[requete AJAX 1] => [action 1] => [vue RJS 1 avec call AJAX 2] =>
[action 2]
=> ...
ou
[requete AJAX 1] => [action 1] => [réponse OK] => [callback AJAX
onSuccess
avec call AJAX 2] => [action 2]

Il y a des variations sur ce thème, mais la constante c'est :
Le serveur ne prendra *jamais* l'initiative, il faut que ce soit le
client
qui fasse une requête pour otbenir une réponse.

2008/10/8 guillaume belleguic <guillaume.belleguic@gmail.com>

> response "2eme  traitement ok"
>
> si vous avez une solution merci.
>
> >
>


--
Michel Belleville
5183febd0dfb911f94c270ddd174fe71?d=identicon&s=25 guillaume belleguic (Guest)
on 2008-10-08 15:51
(Received via mailing list)
J'ai crue comprendre qu'une requête ajax pouvait recevoir plusieur
réponse à
la suite, ce n'est pas le cas ?
Bien entendu je voudrais que la méthode de mon controlleur face
"plusieurs"
render (je sais je sais ce n'est pas possible, mais alors pourquoi
Ajax.request peut reçevoir plusieurs réponse ?)

2008/10/8 Michel Belleville <michel.belleville@gmail.com>
80a781617235d6f65b1441cd36c52a83?d=identicon&s=25 ook? ook! (Guest)
on 2008-10-08 15:53
(Received via mailing list)
2008/10/8 guillaume belleguic <guillaume.belleguic@gmail.com>

> J'ai crue comprendre qu'une requête ajax pouvait recevoir plusieur réponse
> à la suite, ce n'est pas le cas ?
> Bien entendu je voudrais que la méthode de mon controlleur face "plusieurs"
> render (je sais je sais ce n'est pas possible, mais alors pourquoi
> Ajax.request peut reçevoir plusieurs réponse ?)
>

Ma réponse est à prendre avec recul: je ne suis pas un grand clerc en
Ajax

Pour moi, cela signifie qu'un appel Ajax peut arriver en plusieurs chunk
pour les réponses massives (ou les réseaux lents), mais l'ensemble de
ces
chunks (parties) ne constituent qu'un seul et même message.

HTH
5183febd0dfb911f94c270ddd174fe71?d=identicon&s=25 guillaume belleguic (Guest)
on 2008-10-08 16:01
(Received via mailing list)
j'étais en train de regardé se dernier point et je me demandais si je
n'avais pas été un peut rapide à répondre.
si vous avez d'autre élément.

En fait je souhaite afficher un message a chaque étape d'un processus
complex.


2008/10/8 ook? ook! <ook1708@gmail.com>
047a4fc673336a70a6b58338bc6d677d?d=identicon&s=25 Michel Belleville (Guest)
on 2008-10-08 16:03
(Received via mailing list)
Effectivement, ta réponse peut arriver en plusieurs parties, surtout
lorsque
tu reçois une réponse très longue. Tu peux "attraper" au vol l'arrivée
d'un
paquet particulier en utilisant la méthode de rappel "onLoad" de tes
calls
AJAX.

*Mais :*

Tu ne peux pas être sûr de recevoir un morceau "complet" chaque fois que
"onLoad" est activé, ni combien de morceaux tu vas recevoir d'un coup,
ni
quelle proportion de la réponse tu auras reçu, à moins de faire des
bidouilles de haut niveau côté serveur.

Donc en général, ça ne sert pas à grand chose.

Si ton objectif est de chaîner plusieurs actions en un fil dont
l'utilisateur peut suivre la progression, chaîner les requêtes AJAX
unitaires me semble beaucoup plus approprié.

Le 8 octobre 2008 15:53, ook? ook! <ook1708@gmail.com> a écrit :

>
> Ma réponse est à prendre avec recul: je ne suis pas un grand clerc en Ajax
>
> Pour moi, cela signifie qu'un appel Ajax peut arriver en plusieurs chunk
> pour les réponses massives (ou les réseaux lents), mais l'ensemble de ces
> chunks (parties) ne constituent qu'un seul et même message.
>
> HTH
>
> >
>


--
Michel Belleville
5183febd0dfb911f94c270ddd174fe71?d=identicon&s=25 guillaume belleguic (Guest)
on 2008-10-08 16:13
(Received via mailing list)
en fait j'ai une method create qui fait :1 - j'upload le un fichier
2- j'annonce que le fichier est arrivé
3 - je vérifie que le fichier est conforme au spec
4- j'annonce que le fichier est conforme
5- je traite le fichier
6 - fin de traitment

je voulais resté sur une fonction mais donné des informations à
l'utilisateur au fur et a mesure.


2008/10/8 Michel Belleville <michel.belleville@gmail.com>
047a4fc673336a70a6b58338bc6d677d?d=identicon&s=25 Michel Belleville (Guest)
on 2008-10-08 16:34
(Received via mailing list)
On parle bien d'une opération atomique dont tu veux juste donner
l'avancement.

Dans ce cas il te reste la méthode des envois successifs, ça va te
forcer à
sortir sérieusement des rails parce que c'est complètement pas dans
l'esprit
du principe MVC de rails (normalement on ne fait la vue qu'après que le
contrôleur a finit son boulot) et à gérer toi-même les envois successifs
"par paquet" au client. Ce n'est pas impossible, il est même possible
que
quelqu'un ait déjà fait un plugin dans ce sens (et si tu met en place
une
solution de ce genre ce serait bien d'en faire un plugin histoire que ça
ne
soit pas perdu d'un projet à l'autre), mais ça va demander pas mal de
boulot
quand même.

Donc si tu ne veux pas te casser la tête, à ta place je ferais plutôt la
technique de l'illusioniste qui consiste à désactiver l'envoi du
formulaire
du fichier et faire apparaître une magnifique animation d'attente, dans
90%
des cas ça suffit à faire patienter les utilisateurs. Pour les 9% les
plus
nerveux, tu peux ruser en affichant un petit rapport {avec
scriptaculous}
qui fasse un truc du genre :

   1. Votre fichier est bien arrivé ! {avec un petit flash} Je valide
votre
   fichier... {apparition d'une animation pour faire patienter, pause de
3-5
   secondes}
   2. Votre fichier à été validé et est conforme aux specs ! {nouveau
petit
   flash}  Je traite le fichier {re-animation, re-pause}
   3. Fin du traitement, merci pour votre patience, votre fichier à été
   traité avec tous les égards qui lui sont dûs {feu d'artifice en forme
de
   coeur}

De toute façon, si ton action ne peux pas être interrompue du côté du
serveur, qu'est-ce que ça change que l'utilisateur ait un rapport en
temps
réel de ce que fait le serveur ?

--
Michel Belleville
A99870c1391c39da2089649745965bda?d=identicon&s=25 Jean-François Trân (Guest)
on 2008-10-08 16:54
(Received via mailing list)
Le 8 octobre 2008 16:12, guillaume belleguic a écrit :
>
> en fait j'ai une method create qui fait :
> 1 - j'upload le un fichier
> 2- j'annonce que le fichier est arrivé
> 3 - je vérifie que le fichier est conforme au spec
> 4- j'annonce que le fichier est conforme
> 5- je traite le fichier
> 6 - fin de traitment
> je voulais resté sur une fonction mais donné des informations à
> l'utilisateur au fur et a mesure.

Action chunking ?

http://docs.google.com/View?docid=ddmqwkxs_3972nphr5fk

(sinon on peut faire du push avec des solutions comme Juggernaut [1]
mais c'est plutôt overkill)

    -- Jean-François.

[1] Voir :
http://en.oreilly.com/railseurope2008/public/sched...
http://assets.en.oreilly.com/1/event/13/Juggernaut...
047a4fc673336a70a6b58338bc6d677d?d=identicon&s=25 Michel Belleville (Guest)
on 2008-10-08 17:03
(Received via mailing list)
Action chunking aussi ça me semble un peu overkill dans ce cas précis,
étant
donné qu'il ne s'agit pas vraiment d'actions enchaînées mais d'une seule
action dont certaines étapes peuvent être un peu longues (enfin, surtout
l'upload en fait...).

Le 8 octobre 2008 16:53, Jean-François Trân <jftran@rubyfrance.org> a
écrit
:

> > je voulais resté sur une fonction mais donné des informations à
>
> [1] Voir :
> http://en.oreilly.com/railseurope2008/public/sched...
>
> 
http://assets.en.oreilly.com/1/event/13/Juggernaut...
>
> >
>


--
Michel Belleville
A99870c1391c39da2089649745965bda?d=identicon&s=25 Jean-François Trân (Guest)
on 2008-10-08 17:12
(Received via mailing list)
Le 8 octobre 2008 16:33, Michel Belleville a écrit :

> ça va te forcer à sortir sérieusement des rails

Ce qui, sur cette mailing-list, relève du sacrilège !

   -- Jean-François.

--
Les 50 ans du Lisp : http://www.lisp50.org

http://twitter.com/underflow_
A99870c1391c39da2089649745965bda?d=identicon&s=25 Jean-François Trân (Guest)
on 2008-10-08 17:18
(Received via mailing list)
Le 8 octobre 2008 17:03, Michel Belleville
<michel.belleville@gmail.com> a écrit :
> Action chunking aussi ça me semble un peu overkill dans ce cas précis, étant
> donné qu'il ne s'agit pas vraiment d'actions enchaînées

ah bon ?

Guillaume : "En fait je souhaite afficher un message a chaque étape
d'un processus complex."

+ autre message avec la description : upload, vérification de conformité
puis traitement du fichier.

> mais d'une seule action dont certaines étapes peuvent être un peu
> longues (enfin, surtout l'upload en fait...).

On en sait rien, on ne sait pas si le traitement du fichier peut être
long.

De toute manière ,si c'est long les solutions de traitement asynchrone
(BackgrounDRb ou ses copains) ça me semble préférable, mais bon,
c'est l'OP qui fait ce qu'il veut.

    -- Jean-François.

--
Les 50 ans du Lisp : http://www.lisp50.org

http://twitter.com/underflow_
5183febd0dfb911f94c270ddd174fe71?d=identicon&s=25 guillaume belleguic (Guest)
on 2008-10-08 17:32
(Received via mailing list)
wouaip, BackgrounDRb et un appel ajax periodique pour savoir si cela
avance
? pourquoi pas
je regarde

merci pour vos réponses

2008/10/8 Jean-François Trân <jftran@rubyfrance.org>
This topic is locked and can not be replied to.