[Seaside] Asynchronous update from web server
Esteban Maringolo
emaringolo at gmail.com
Mon Apr 8 13:43:44 UTC 2019
El lun., 8 abr. 2019 a las 7:48, dtrussardi at tiscali.it
(<dtrussardi at tiscali.it>) 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: EAMRecursiveTimeout.st
Type: application/octet-stream
Size: 1668 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/seaside/attachments/20190408/a0261979/attachment.obj>
More information about the seaside
mailing list