Newbie questions about Pliant

Newbie questions about Pliant

On HTTP sessionlessness

Message posted by maybe Marcus on 2002/06/05 00:16:16
The questions below relate to an earlier question that I have presented where
I ask whether Pliant has some tool to allow one to know how many people are 
currently logged in to a site.

1-  I still don't understand why HTTP should have anything to do with keeping 
track of how many people are logged in
2- I've noticed that other HTTP websites keep track of both logged in and 
guest users (see the right side of the page at http://news.sourcemage.org 
under the heading 'Who's online').
3- What is the relation between HTTP sessionlessness and the fact that one cannot
logout from a site

Thanks.
Message posted by maybe Hubert Tonneau on 2002/06/05 20:15:13
> 1-  I still don't understand why HTTP should have anything to do with keeping 
> track of how many people are logged in

There is no login, and no logout instruction when using HTTP: the browser is
sending the user and password with each request.
So, you can decide that the user logged in the first time you receive a request
with his user+password, but when do you decide that he logged out ?

> 2- I've noticed that other HTTP websites keep track of both logged in and 
> guest users (see the right side of the page at http://news.sourcemage.org 
> under the heading 'Who's online').

They probably simply use a timeout: the user is considered to be logged out
when no new request was sent for a given amount of time: this is basically
unreliable.

> 3- What is the relation between HTTP sessionlessness and the fact that one 
> cannot logout from a site

You can quite reliably know when a TCP connection closes, so with protocols
that keep a TCP connection open (FTP, telnet), you can resonably reliabely
count the number of clients currently connected.
On the other hand the HTTP protocol says that the browser can close the
TCP connection as soon as he receives the answer, and if the user takes
3 minutes to read the page, then click on a link, the web browser will open
a new TCP connection. If you don't count the user as connected during these
3 minutes, then the numbers you will get will be very low unless the server
is overloaded or the physical connection is very slow. On the other hand,
after two minutes without any new request, did the user switched to another
web site, or is he reading your site ?



Message posted by cb4 on 2002/06/06 00:04:34
>> 2- I've noticed that other HTTP websites keep track of both logged in and 
>> guest users (see the right side of the page at http://news.sourcemage.org 
>> under the heading 'Who's online').

> They probably simply use a timeout: the user is considered to be logged out
> when no new request was sent for a given amount of time: this is basically
> unreliable.

I agree that timing out users isn't a good way of knowing whether they've
actually disconnected or not, but sometimes I would rather have a rough estimate
of how many users are connected than have no idea at all.

>> 1-  I still don't understand why HTTP should have anything to do with keeping 
>> track of how many people are logged in

> There is no login, and no logout instruction when using HTTP: the browser is
> sending the user and password with each request.
> So, you can decide that the user logged in the first time you receive a request
> with his user+password, but when do you decide that he logged out ?

I'm not trying to suggest anything crazy; I'm just trying to understand this
issue in relation to Pliant's capabilities...  Assuming the clients and server
are all running Pliant, wouldn't it be possible to get around this HTTP
sessionless limitation by writing a small Pliant client application -- or an
entire browser :-) -- which would automatically send a log out signal to the
server whenever disconnecting (or when clicking the Log Out button)?
Message posted by maybe Hubert Tonneau on 2002/06/06 09:04:27
Now that it's clear that it cannot be reliable, here are some possibilities:

First, you can select http://localhost/pliant/language/debug/log.html
to get to the log configuration on your server, and define a log file for
your HTTP server. Now, you can write a small parser for that log file that
will count the number of clients according to your own rules.

Second and a bit more complex, you can write your own trace handler (you can
find an example in /pliant/protocol/http/trace.page module). A trace handler
will receive the log on the fly, and is responsible for handling it on the
fly. So, with such a mechanism you can keep the number of connections always
up to date according to your own rules.
Message posted by maybe pom on 2002/06/06 13:06:11
Wouldn't a plugin just before "request parse_then_answer" line of service
method be a simplest way to implement any kind of specific monitoring ?