Safalra wrote:
> On Fri, 28 Sep 2007 06:11:46 -0700, Bart Van der Donck wrote:
>
> > Safalra wrote:
>
> >> On Fri, 28 Sep 2007 11:06:16 +0200, Erwin Moller wrote:
> >>> pt36 wrote:
> >>>> [...]
> >>>> I want, if is possible, that the page two.html show in the textarea
> >>>> text 2 that a man one write in the textarea text 1 in realtime (like
> >>>> onkeyup)
> >>>> [...]
>
> >>> I think you'll have to make a trip via a server.
> >>> Two servers actually if they are in different domains.
> >>> [...]
> >>> Can be done, but you'll have to poll server2 a lot to get a fast
> >>> response in text2.
> >>> [...]
> >>> Server2 will be busy because the javascript in the page with form2 is
> >>> polling the server every second or so.
>
> >> It might be more efficient for Server2 to delay responding until there is
> >> data to send to form2, subject to some maximum delay to avoid timeout. If
> >> there is no new data most of the time (that is, the user of form1 isn't
> >> typing most of them time), this will dramatically reduce the number of
> >> server requests made.
>
> > I don't think this would be a wise strategy, because Form2 cannot know
> > when Man1 types. Form2 needs to go to server anyway to check whether
> > the data has updated (that is, Man2 needs to initiate every request).
>
> > If Man2 fires this request and no data has updated, then you could
> > indeed delay the response for e.g. 20 seconds; but Man1 can type
> > something new during those 20 seconds, which can then only be shown to
> > Man2 after 20 seconds (at the following request that Man2 fires).
>
> You've misundertood what I mean. Form2 will know when Man1 types, because
> as soon as Man1 types the server is informed and then responds to Form2.
> Permit me to explain with two examples:
>
> If Man1 isn't typing:
>
> - Form2 makes a server request
> - Nothing happens for 20 seconds
> - The server responds to Form2, saying nothing has happened
> - Form2 makes another server request
> - ...and so on
>
> If Man1 is typing:
>
> - Form2 makes a server request
> - Nothing happens for a bit
> - Form1 makes a server request sending new data
> - The server responds to Form2, with the new data
> - Form2 makes another server request
> - ...and so on
Ah, now I see it better. Yes I believe this would be a good plan, by
disabling the output buffer of the server script and let it run for 20
seconds (having its own sub-interval of 1 second or so).
> Form2 is constanly in communication with the server, but if Man1 isn't
> typing then the server only responds every 20 seconds, saying that nothing
> has happened. If Man1 is typing, the server responds as soon as it receives
> input (although to avoid heavy server load when Man1 is typing it shouldn't
> respond to Form2 until some amount of time after the request was made - one
> second, for example). The only tricky part is writing server-side code that
> doesn't lock up the server while waiting to see if new data arrives from
> Form1
I don't think this should be tricky - I'm quite familiar with these
kinds of constructions:
Preparation: investigate how much time-out is allowed for the CGI
Script actions:
(1) disable output buffer of script
(2) check if writable file has been updated by Man1
- if yes, respond with new content to Man2
- if no, send negative flag to Man2, sleep 1 second and
perform (2) twenty times in total
(3) new request from Man2: back to (1)
Man1 should then update the content with an onKeyUp event. I think
there should also be a limit on the (allowed number of) characters in
Man1's textarea, and always check for nicely terminated requests/
responses.
I remember using Netscape's Server Push about 10-15 years ago for this
kind of applications. It would be ideal here, but it's not supported
anymore. Anyway, Java still better
--
Bart