[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [MacPerl-WebCGI] query



This is in reply to the question posted by Jason Pidd:

>I want a page to initially display a page with 2 frames , one frame
>initially blank, the other containing approx 16 signs to an image...


This is not so much a response to Jason's question as it is a comment 
inspired by it.

Jason's question, paraphrased by me:

Multiple users are looking at the Web same page.  This page contains 
two frames, one with thumbnails, one with an image.  When one user 
selects a thumbnail, not only does that affect the image that user 
sees in the other frame, but it also affects the appearance and 
behavior of that thumbnail on the screens of all other users.

If I understand correctly, this is double plus un trivial.  The 
reason is that the transport protocol which underlies the Web, httpd, 
uses transient connections.  Thus, none of the other users are 
connected to the server at the moment when the first user selects the 
thumbnail.  In an extreme case, they might be using autodial PPP 
connections with short timeouts, and their computers no longer even 
have physical connections to the Internet.  This is in contrast to a 
Telnet connection, for example, where a connection is maintained and 
thus for which it is easy for the server to initiate a transfer of 
data to the client.  I can quickly think of two work-arounds, both 
ugly.  The first is for the server to pretend that it has never 
finished sending data; to artificially keep the connection open. 
This still leaves you with the problem of how to change the 
appearance of an existing screen, but this might be possible using 
JavaScript.  The other work-around involves writing a Java applet 
that basically embeds a client-server system totally unrelated to 
http or the Web within a Web browser.  What makes this ugly is that 
one basically has to reinvent the Web from scratch and write it in 
Java just to accomplish a fairly simple task.
That is my response to Jason.

My comment is that this is a problem I have run into a number of time 
over the years.  There are many cases where one would like a 
persistant rather than a transient connection.  One common example is 
database interactions.  We all handle this with fairly messy state 
saving routines and hidden variables, but it would be simpler if we 
could just hold a connection open until a client had finished a 
transaction.  Another case that springs to mind is a fairly neat 
resource for biologists called BioMOO.  MOO (a form of MUD frequently 
used for serious conferencing) uses persist connections and 
frequently runs over Telnet, using a Telnet client.  However, it is 
pure ASCII and has virtually no graphic capability.  This is a 
serious problem for Biologists, a lot of whose communication is via 
images.  The developer of BioMOO, Gustavo, solved this by grafting a 
Web front end on the MOO.  The problem is that MOOs are interactive, 
and there is no way to allow events in the MOO to update what is seen 
via the web.  In general, one needs to run a Telnet or MOO client in 
parallel with the Web browser, and manually reload the Web page as 
instructed by that client.  Gustavo simplified this a bit by writing 
a Telnet client in Java so that everything can happen on one screen, 
but automatic refreshes of the Web page are still missing.

http was never designed for interactive behavior.  However, there is 
nothing that would forbid adding the ability of Web browsers (which 
are already more than just http clients and HTML renderers) to 
communicate via a different protocol.  The advantages of doing that 
rather than writing custom Java applets are:
1) It promotes true laziness.  # <= obRelevance to (Mac)Perl
2) It could be much more tightly integrated, so that the browser 
could be instructed to load HTML via http via the other, 
to-be-invented, persistant protocol.

Comments?

-David Steffen-

David Steffen, Ph.D.
President, Biomedical Computing, Inc. <http://www.biomedcomp.com/>
Phone: (713) 610-9770 FAX: (713) 610-9769 E-mail: steffen@biomedcomp.com

==== Want to unsubscribe from this list?
==== Send mail with body "unsubscribe" to macperl-webcgi-request@macperl.org