Jasen Betts <jasen@free.net.nospam.nz> wrote:
[color=blue]
> On 2005-12-09, John Bokma <john@castleamber.com> wrote:[color=green]
>> Hi,
>>
>> I am working on a simple chat program and want to use AJAX. In order
>> to get the new lines added to the chat I need to call a server-side
>> script, say every x seconds.[/color]
>
> just call it and when it returns call it again have the server delay
> its response if there is no new matterial, limit the delay to about 20
> seconds (so stuff does't time out)[/color]
20 seconds is a long, long time in a chat :-)
[color=blue]
> this way a correctly written server can give near immediate response
> to posted lines instead of having to wait for the client to request,
> and also the idle bandwidth is reduced.[/color]
Sounds like a good idea, will think about it.
[color=blue][color=green]
>> A second way to get those lines is to get them as a reply to the "add
>> this line" request when someone pressed the send button (or just
>> enter).[/color]
>
> yes (but that's can get annoying) with the above running
> asynchronously use a separate ajax call to post..[/color]
But then still the question remains: how atomic is this? I don't want to
end up with a part of one line, then a new line, followed by the rest.
[color=blue][color=green]
>> So my idea was to:
>>
>> get lines, and add them to the chat
>> setTimeOut for 5 seconds to get lines
>> if someone presses send, remove the setTimeOut, and
>> after receiving lines, setTimeOut for 5 seconds
>>
>> The main question is: are the onClick handler and the setTimeOut
>> atomic?[/color]
>
> AFAIK while javascript is executing the all other events are
> suspended.[/color]
So basically there is one even queue, and they are processed in order?
Or does suspend mean that execution of an event handler is interrupted
somewhere in the middle, and another gets started?
[color=blue][color=green]
>> What I mean, should I see a browser as handling events atomic, and
>> both are events, hence it's not possible that the function registered
>> with setTimeOut is called in the "middle" of the onClick handler?[/color]
>
> I thik JS is aingle-streaming, so no the timout handler won't
> iinterrupt the click handler or vice versa. (but I think yoshoulduse
> readyStateChange on the request instread of a timout to trigger the
> downloads.[/color]
But I want to know for sure ;-)
[color=blue]
> don't use setimeout on the client. and there's no need to use the
> posting requests to retrieve content, keep them seperate - the code is
> easier.[/color]
Ok, I will have a go at your idea, which is interesting, thanks.
--
John MexIT:
http://johnbokma.com/mexit/
personal page:
http://johnbokma.com/
Experienced programmer available:
http://castleamber.com/
Happy Customers:
http://castleamber.com/testimonials.html