Re: Asynchronous update from web server
Esteban Maringolo <[email protected]>
| Newsgroups | gmane.comp.lang.smalltalk.squeak.seaside |
|---|---|
| Message-ID | <CAJMgPCKY_h4XUCe8=Jt2niqfEG+Ybm=Fk3h8CGLR2jR=EdC6jQ@mail.gmail.com> |
El lun., 8 abr. 2019 a las 7:48, [email protected] (<[email protected]>) escribió: > In my case i haven't any user actions on the client. > The client display some data with dynamic banner ( marquee tag ) > and i need to update it only when the data to display change from the server. > When the data on the server relative to an banner change i need to force the clients banners update. > it seems to me that your initial solution may be fine. > > What do you think? Too complex for such a simple task. Is the <marquee> tag still a thing? I though it dissapeared when Geocities closed. :) See below my suggestion. > Another solution could be to manage an client ajax request with a specific interval > but update the relative banner div only if the related data received from the server changed. > ( But how i can manage it? > Can i not reply to an client ajax request > or respond to doing nothing and continue to view the current status ) You can have a recursive call to setInterval() that returns a script (javascript) that updates the mentioned banner, and if no update is necessary you do nothing. Doing it once per minute is nothing for the server, since it's a simple AJAX call, which if nothing needs updating, is fast to answer. These are the key parts: renderContentOn: html self renderBannerOn: html. html script: (html jQuery script: [ :script | self scriptUpdaterOn: script ]) scriptUpdaterOn: aJSScript aJSScript << ((aJSScript jQuery ajax script: [ :s | self shouldUpdate ifTrue: [ self scriptBannerUpdateOn: s ]. self scriptUpdaterOn: s ]) setTimeout: 1 minute) scriptBannerUpdateOn: s s << ((s jQuery id: 'banner') replaceWith: [ :h | self renderBannerOn: h ]) Attached to this mails goes a working example of this. In #scriptBannerUpdateOn: I would put all the logic, even by replacing the whole component as a whole (sometimes the best compromise) or indidividual elements within it). Regards, Esteban A. Maringolo _______________________________________________ seaside mailing list [email protected] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
EAMRecursiveTimeout.st
(application/octet-stream, 1.6 KB) - not displayed