push-model of interactive web pages

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

push-model of interactive web pages

Jason Rogers-4
I just came back from the Real World Ajax Seminar in New York City.
The seminar was pretty good in general, but one really neat thing I
saw was the innovation of a push model type of live update.

The trick is to embed a small (1px by 1px) flash file.  This embedded
object has the capability of opening a socket to the server.  The web
page can then register itself to the server over that socket and
bada-boom-bada-bing the server can PUSH information to all connected
clients.

The two demos of this functionality I saw were in the context of Flex
programming and Ruby on Rails.

The Flex guy showed outlining directions on a map in a browser --
those outlines showed up immediately in the two other browsers that
were connected to the server on different sessions.

The Ruby on Rails guy showed several examples of adding and deleting
records in a web app through various interfaces with the server
(browser, commandline, etc.).  These adds and deletes showed up
immediately in the other browsers that were connected in different
sessions.

Pretty neat stuff!  This is definitely something that could be a big
win for Seaside.  I will be working on it over the next month to see
if I can implement it.  However, if someone beats me to the punch: all
the better.

--
Jason Rogers

"Where there is no vision, the people perish..."
    Proverbs 29:18
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

Brad Fuller
Jason Rogers wrote:

> I just came back from the Real World Ajax Seminar in New York City.
> The seminar was pretty good in general, but one really neat thing I
> saw was the innovation of a push model type of live update.
>
> The trick is to embed a small (1px by 1px) flash file.  This embedded
> object has the capability of opening a socket to the server.  The web
> page can then register itself to the server over that socket and
> bada-boom-bada-bing the server can PUSH information to all connected
> clients.
>
> The two demos of this functionality I saw were in the context of Flex
> programming and Ruby on Rails.
>
> The Flex guy showed outlining directions on a map in a browser --
> those outlines showed up immediately in the two other browsers that
> were connected to the server on different sessions.
>
> The Ruby on Rails guy showed several examples of adding and deleting
> records in a web app through various interfaces with the server
> (browser, commandline, etc.).  These adds and deletes showed up
> immediately in the other browsers that were connected in different
> sessions.
>
> Pretty neat stuff!  This is definitely something that could be a big
> win for Seaside.  I will be working on it over the next month to see
> if I can implement it.  However, if someone beats me to the punch: all
> the better.
>
>  
very interested in this as I want to push audio stream to a client and
have the user select among a selection for seamless switch.
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

Lukas Renggli
> > The trick is to embed a small (1px by 1px) flash file.  This embedded
> > object has the capability of opening a socket to the server.  The web
> > page can then register itself to the server over that socket and
> > bada-boom-bada-bing the server can PUSH information to all connected
> > clients.

I doubt that this works if you are behind a firewall or a NAT router ...

Google is using a nice technique for their Google Talk integration in
Gmail: they send out a request to a file of virtually infinite size
that is empty and only sent very slowly, just so that it doesn't
time-out. Now they can simply push JavaScript code into that stream
that will be immediately execute on the client. No need of polling or
other dirty tricks, just a plain http request. It would be cool to
have something like that in Seaside as well ;-)

Cheers,
Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

wilkesj
On 3/16/06, Lukas Renggli <[hidden email]> wrote:
> Google is using a nice technique for their Google Talk integration in
> Gmail: they send out a request to a file of virtually infinite size
> that is empty and only sent very slowly, just so that it doesn't
> time-out. Now they can simply push JavaScript code into that stream
> that will be immediately execute on the client. No need of polling or
> other dirty tricks, just a plain http request. It would be cool to
> have something like that in Seaside as well ;-)

That sounds very interesting.  I would love to see an implementation of that.

- Wilkes
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

RE: push-model of interactive web pages

Ramon Leon
As would I.

________________________________

From: [hidden email] on behalf of Wilkes Joiner
Sent: Fri 3/17/2006 8:07 AM
To: The Squeak Enterprise Aubergines Server - general discussion.
Subject: Re: [Seaside] push-model of interactive web pages



On 3/16/06, Lukas Renggli <[hidden email]> wrote:
> Google is using a nice technique for their Google Talk integration in
> Gmail: they send out a request to a file of virtually infinite size
> that is empty and only sent very slowly, just so that it doesn't
> time-out. Now they can simply push JavaScript code into that stream
> that will be immediately execute on the client. No need of polling or
> other dirty tricks, just a plain http request. It would be cool to
> have something like that in Seaside as well ;-)

That sounds very interesting.  I would love to see an implementation of that.

- Wilkes
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside



_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

winmail.dat (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

Lukas Renggli
> That sounds very interesting.  I would love to see an implementation of that.

Plain Seaside, no Flash, no Java-Applet, ...

http://www.lukas-renggli.ch/smalltalk/seaside/videos/comet.mov

--
Lukas Renggli
http://www.lukas-renggli.ch
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

RE: push-model of interactive web pages

Ramon Leon
In reply to this post by Jason Rogers-4
> -----Original Message-----
> From: [hidden email]
> [mailto:[hidden email]] On Behalf
> Of Lukas Renggli
> Sent: Tuesday, April 11, 2006 2:51 PM
> To: The Squeak Enterprise Aubergines Server - general discussion.
> Subject: Re: [Seaside] push-model of interactive web pages
>
> > That sounds very interesting.  I would love to see an
> implementation of that.
>
> Plain Seaside, no Flash, no Java-Applet, ...
>
> http://www.lukas-renggli.ch/smalltalk/seaside/videos/comet.mov
>

Now show us the code to do it. :) Awesome by the way.
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

Lukas Renggli
> Now show us the code to do it. :) Awesome by the way.

It is the Comet package in the Seaside repository.

Keep in mind, that it is more a hack or prove of concept for now. I
guess it only works properly in Safari. As usual the tricky thing is
to get the JavaScript code working. I am using a hidden iframe right
now, meaning less JavaScript to write but having the browser never
finishing loading. As a next step it would be interesting to see if
the same could be done using XMLHttpRequest, meaning more JavaScript
to write but having the browser(s) behave nicely ...

Lukas



> _______________________________________________
> Seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>


--
Lukas Renggli
http://www.lukas-renggli.ch
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

Chris Double
On 4/12/06, Lukas Renggli <[hidden email]> wrote:
> As a next step it would be interesting to see if
> the same could be done using XMLHttpRequest, meaning more JavaScript
> to write but having the browser(s) behave nicely ...

I like the approach of using XMLHttpRequest but having it complete
after a period of time. So have the request go for 1 minute and after
that the connection is closed and the browser fires off another
XMLHttpRequest. This works around proxies that have short timeouts and
close iframe connections after a certain period of time.

The downside of both approaches though is the fact that some browsers
limit the number of open connections. I believe this is mandated in
the HTTP/1.1 specification? This means that if you have a long lived
'comet' connection then it may affect other xmlhttprequests going on
if you go past that connection limit. I don't know if this is actually
a problem in 'real world' apps though.

Nice demo by the way!

Chris.
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

wilkesj
In reply to this post by Lukas Renggli
Very cool. I can't wait to have some time to play around with this.

- Wilkes

On 4/11/06, Lukas Renggli <[hidden email]> wrote:

> > That sounds very interesting.  I would love to see an implementation of that.
>
> Plain Seaside, no Flash, no Java-Applet, ...
>
> http://www.lukas-renggli.ch/smalltalk/seaside/videos/comet.mov
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
> _______________________________________________
> Seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

Lukas Renggli
In reply to this post by Chris Double
I redid the JavaScript part, so that it is using XMLHttpRequest and
not the ugly hidden iframe technique. It is now working in Safari and
FireFox. Someone with an Internet Explorer could probably get it
running there too.

> I like the approach of using XMLHttpRequest but having it complete
> after a period of time. So have the request go for 1 minute and after
> that the connection is closed and the browser fires off another
> XMLHttpRequest. This works around proxies that have short timeouts and
> close iframe connections after a certain period of time.

The problem when disconnecting is that the application might loose
events, however my first try and the one I published just now are both
reconnecting in case the connection is lost. Could somebody with a
proxy confirm that it works?

> The downside of both approaches though is the fact that some browsers
> limit the number of open connections. I believe this is mandated in
> the HTTP/1.1 specification? This means that if you have a long lived
> 'comet' connection then it may affect other xmlhttprequests going on
> if you go past that connection limit. I don't know if this is actually
> a problem in 'real world' apps though.

Yes, I observed that FireFox only allows one long-lived connection,
but I guess it blocks the other windows because they request the same
URL, and this could be easily fixed. Safari doesn't care, I can open 5
windows with the same comet connection at once.

Now the next steps will be to find a better model for Seaside, but
maybe after Smalltalk Solutions ...

Cheers,
Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: push-model of interactive web pages

Philippe Marschall
> Yes, I observed that FireFox only allows one long-lived connection,
> but I guess it blocks the other windows because they request the same
> URL, and this could be easily fixed. Safari doesn't care, I can open 5
> windows with the same comet connection at once.

There are a lot of network options that you can tune for firefox. Open
about:config and search for connections. One interesting value
network.http.max-persisten-connections-per-server which is 2 for me.
Maybe increasing that helps.

Yes I know this a hack and no general solution.

Cheers
Philippe
_______________________________________________
Seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside