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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.