Hi William,

We are using the HTML5 websocket as proposed in
draft-hixie-thewebsocketprotocol-75. This is supported by Chrome 4/5
and now Safari 5. This standard is evolving and Chrome 6 onwards will
be using draft-ietf-hybi-thewebsocketprotocol-00 which simplifies the
syntax somewhat but does break our current implementation.

Our websocket server is based on the pywebsocket code produced by the
Chrome developers. Our first version used a persistent AJAX style
connection which was pretty flaky, websockets seem to work much better
and give good speed.

As Ludwig mentioned we can achieve pretty good frame rates in animated
plots (easy animation without local threading issues was the primary
driver for developing this in the first place). Obviously it does
depend somewhat on the bandwidth available between the web client and
the server, but certainly for local/LAN connections everything is
pretty snappy.

We still have some issues to work out with plots that use large
numbers of markers as there are no HTML5 primitive constructs
available (as they are in SVG) to speed up drawing the same object
multiple times.

I will try and add a screencast to the demo page by early next week.

Cheers,

Simon Ratcliffe

On Fri, Jun 18, 2010 at 11:10 AM, william ratcliff
<william.ratcl...@gmail.com> wrote:
> I would be interested in seeing the screencast.  For the websocket, are you
> using "Comet" (which is what we use for our live data through the used of
> orbited and STOMP, so I could see being able to do interactivity, but
> thought it would be too slow for interactivity, which is why we went with
> FLOT and were planning to start adding functionality--legends, etc.), or the
> new proposed html5 websocket?
> William
>
> On Fri, Jun 18, 2010 at 3:01 AM, Ludwig Schwardt <ludwig.schwa...@gmail.com>
> wrote:
>>
>> Hi,
>>
>> On Thu, Jun 17, 2010 at 8:07 PM, william ratcliff
>> <william.ratcl...@gmail.com> wrote:
>> > How do you deal with interactivity?
>>
>> When you create a figure, a WebSocket server is spawned on its own
>> socket, with its own thread. The client (browser) then interacts with
>> these threads. Zooming, panning and resizing are all done on the
>> server side, under request from the client. This allows you the full
>> functionality of matplotlib, as this corresponds to how other
>> interactive backends work. The interactivity is better than expected -
>> with local connections we achieve 40 frames per second while animating
>> a 2000-point plot, for example.
>>
>> We also provide a management port, which serves as the portal for the
>> available figures. At the start of your session, you connect the
>> browser to this management port. Thereafter, new figures pop up as new
>> thumbnails on this page, and can be selected for viewing. This port
>> also provides the static HTML/JS framework for the plots.
>>
>> This interactivity is what makes it a true replacement for the other
>> interactive backends. If people are interested, we can put together a
>> screencast of the functionality.
>>
>> Ludwig
>
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> Matplotlib-devel mailing list
> Matplotlib-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>
>

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to