persistent TCP connection over page reloads ?

M

mel

Hi all,

I need a persistent TCP connection with my web server over page
reloads.

This means that, even if the user goes to a different page (in
my domain), I want to keep a TCP connection live.

I know I can do something similar with globalStorage in FF,
window.name & userData on IE, but those storages only hold strings.
And, AFAIK, I can't serialize a TCP connection (could be through
XmlHttpRequest, etc).

I wonder if anyone knows if this is possible at all.

Sam

PS it doesn't have to be only in javascript. the solution can
use flash too.
 
S

Stevo

mel said:
I need a persistent TCP connection with my web server over page
reloads.

This means that, even if the user goes to a different page (in
my domain), I want to keep a TCP connection live.

I wonder if anyone knows if this is possible at all.

Sam

PS it doesn't have to be only in javascript. the solution can
use flash too.

I vaguely recall this being possible with a Java Applet. Although I've
done plenty of Java, I've never dabbled with applets so I can't confirm
if this is true. Somebody who seemed to know what he was talking about
told me such things were possible. It's worth at least asking the same
question on a Java forum.
 
T

Thomas 'PointedEars' Lahn

mel said:
I need a persistent TCP connection with my web server over page
reloads.

No, you don't. Besides, persistent *HTTP* connections (which is what you
mean) have to be supported by both client and server, and they won't help
you here. Whether the HTTP connection is persistent or not, the current
global execution context of the script engine is destructed when another
resource is being navigated to.
This means that, even if the user goes to a different page (in
my domain), I want to keep a TCP connection live.

Chances are that it is kept alive already, as persistent connections are the
HTTP/1.1 default. You don't seem to know what TCP is.
I know I can do something similar with globalStorage in FF,
window.name & userData on IE,

Or simply cookies, supported by all scriptable UAs through the same mechanism.
but those storages only hold strings.

What else would you want to store? Even an image can be represented by a
sequence of characters.
And, AFAIK, I can't serialize a TCP connection (could be through
XmlHttpRequest, etc).

But you can serialize objects.
I wonder if anyone knows if this is possible at all.

That depends on what you are *really* up to.
PS it doesn't have to be only in javascript. the solution can
use flash too.

comp.lang.misc would have been the appropriate newsgroup then.


PointedEars
 
M

mel

No, you don't. Besides, persistent *HTTP* connections (which is what you
mean) have to be supported by both client and server, and they won't help
you here. Whether the HTTP connection is persistent or not, the current

wait. aren't HTTP connections built on top of TCP ?
global execution context of the script engine is destructed when another
resource is being navigated to.

window.name & globalStorage & userData aren't destructed
Chances are that it is kept alive already, as persistent connections are the
HTTP/1.1 default. You don't seem to know what TCP is.

You don't seem to understand my question.
Or simply cookies, supported by all scriptable UAs through the same mechanism.

cookies go back to the web server. i don't want them to. cookies only
store strings, which doesn't work for me either (unless I can
serialize a xmlhttprequest).
What else would you want to store? Even an image can be represented by a
sequence of characters.

A XmlHttpRequest can't.

I want to store a XMLHttpRequest object and not destruct it over page
reloads.

Actually, it doesn't have to be a XMLHttpRequest, that is why I didn't
mentioned HTTP.

As far as the connection is alive over page reloads, it works for me.

It could be a ftp session, or any other kind of connection through js,
java applets, flash or whatever other technology you want to use (as
Stevo pointed out).
But you can serialize objects.


That depends on what you are *really* up to.

maybe you didn't understand what I need.

I need to keep a connection with my server over page reloads (doesn't
have to be a webserver talking HTTP, could be anything. it is just
that is easier to make a HTTP connection to a webserver in JS, but
with flash or applets u could have any other kind like ftp, XMPP, a
plain TCP connection, etc).

I want to stream data from the server to the client (I guess this is
called push, reversed ajax, or watever), but once the streaming starts
my server can't loose the connection with the client (the browser).

any ideas ?
 
T

Thomas 'PointedEars' Lahn

mel said:
wait. aren't HTTP connections built on top of TCP ?

Yes, they are. But that does not matter.
window.name & globalStorage & userData aren't destructed

As for window.name, there is insufficient proof for that.
You don't seem to understand my question.

You don't seem to have asked the right one.
cookies go back to the web server.

Cookies are stored client-side. They are submitted to the Web server only
on request.
i don't want them to. cookies only store strings, which doesn't work for
me either (unless I can serialize a xmlhttprequest).


A XmlHttpRequest can't.

Yes, it can. Reading it back is the difficult thing.
I want to store a XMLHttpRequest object and not destruct it over page
reloads.

Tough luck. You will need a persistent container object for your persistent
execution context, say a frame or another window.
Actually, it doesn't have to be a XMLHttpRequest, that is why I didn't
mentioned HTTP.

I beg your pardon?
As far as the connection is alive over page reloads, it works for me.

That depends on what you call a "page".
It could be a ftp session, or any other kind of connection through js,
java applets, flash or whatever other technology you want to use (as
Stevo pointed out).

ISTM you don't want to use browser scripting.
maybe you didn't understand what I need.

Maybe you have not explained it properly.
[...]
I want to stream data from the server to the client (I guess this is
called push, reversed ajax, or watever), but once the streaming starts
my server can't loose the connection with the client (the browser).

any ideas ?

You have explained what you want but not why. ISTM you are on the wrong
track, and in the wrong newsgroup anyway.


Please trim your quotes.


PointedEars
 
B

beegee

Hi all,

       I need a persistent TCP connection with my web server over page
reloads.

       This means that, even if the user goes to a different page (in
my domain), I want to keep a TCP connection live.

        I know I can do something similar with globalStorage in FF,
window.name & userData on IE, but those storages only hold strings.
And, AFAIK, I can't serialize a TCP connection (could be through
XmlHttpRequest, etc).

        I wonder if anyone knows if this is possible at all.

        Sam

        PS it doesn't have to be only in javascript. the solution can
use flash too.

You could do it with Flash.

1. Write your own little Flash server (there are a lot of open source
examples in Java and Python) that keeps a connection open and has
someway to identify client connections.
2. Write a Flash HTTP connection client object that stores and reads a
connection identifier from a cookie.

I know its a lot of work and a radical approach but I can't think of
another way. From my point of view, anything is better than dealing
with Java applets.

Bob
 
M

mel

Yes, they are. But that does not matter.



As for window.name, there is insufficient proof for that.



You don't seem to have asked the right one.



Cookies are stored client-side. They are submitted to the Web server only
on request.



Yes, it can. Reading it back is the difficult thing.

not difficult, impossible. serializing it would make it a string, and
when the object reference is lot, it will close the http connection.

deserializing it wouldn't get the object to its original state.

or am I wrong ?
Tough luck. You will need a persistent container object for your persistent
execution context, say a frame or another window.

that is one solution (doing everything inside a frame or opening
another window), but (1) i don't want to put my hole website inside a
frame, and (2) I am trying to avoid popups (because no one likes
popups, and most of the people disables them).
I beg your pardon?


That depends on what you call a "page".



ISTM you don't want to use browser scripting.

I do. I woulde definitely prefer to use js.

But if js can't do the job, then I am flexible enough to go to a
different approach.
maybe you didn't understand what I need.

Maybe you have not explained it properly.
[...]
I want to stream data from the server to the client (I guess this is
called push, reversed ajax, or watever), but once the streaming starts
my server can't loose the connection with the client (the browser).
any ideas ?

You have explained what you want but not why. ISTM you are on the wrong
track, and in the wrong newsgroup anyway.

I guess I am not in the wrong newsgroup, since this questions if
javascript is capable of doing something or not.

The why is here:

I have a server, and it streams data to a particular user. It is
important for me to keep the connection with the user live, even if
the user goes to a different page (inside my domain). I am not using
frames, and I don't want to popup another window to keep this
connection live.

Couple of things I tried:

1) serializing/deserializing the XMLhttpRequest & storing it on the
globalStorage & userData (this is very unlikely to work, because it is
kind of absurd)
2) setTimeout(function() {return obj}, 5 seconds ) on unload() and
catching it back on load() (this is very unlikely to work, because it
is absurd)
3) keeping the connection live on the browser's visited page, and
access it through the current page (this doesn't work either)
4) putting all my site inside a frame, and using a 0size frame with
the object (that works, but makes everything ugly)
5) opening a popup window and keeping the object there (that works
too, but oppup blockers block me)

those are all kind of absurd, but I had to try.
 
M

mel

You could do it with Flash.

1. Write your own little Flash server (there are a lot of open source
examples in Java and Python) that keeps a connection open and has
someway to identify client connections.
2. Write a Flash HTTP connection client object that stores and reads a
connection identifier from a cookie.

I know its a lot of work and a radical approach but I can't think of
another way. From my point of view, anything is better than dealing
with Java applets.

Bob

That is kind of solving the problem on the server side. I was hoping
for something on the client side.

But you understood what I am trying to solve here ...

Is there a way to keep a live connection on a flash client (even if
the user unloads the flash from the browser) ?
 
B

beegee

Is there a way to keep a live connection on a flash client (even if
the user unloads the flash from the browser) ?

No, you need a server that will keep open the connection. Google
"Comet".

Bob
 
T

Thomas 'PointedEars' Lahn

mel said:
not difficult, impossible. serializing it would make it a string, and
when the object reference is lot, it will close the http connection.

deserializing it wouldn't get the object to its original state.

or am I wrong ?

I think it would be possible to restore the status and the data already
received, but the request would have to be a new one.
that is one solution (doing everything inside a frame or opening
another window), but (1) i don't want to put my hole website inside a
frame, and (2) I am trying to avoid popups (because no one likes
popups, and most of the people disables them).

Without serialization, it is the only solution with browser scripting.
A page, contained inside a <html> tag.

You mean an HTML document.
If a page gets reloaded, is there a way to keep a connection with the
server live ?

The connection: yes (see HTTP/1.1). The global execution context: no.
I do. I woulde definitely prefer to use js.

But if js can't do the job, then I am flexible enough to go to a
different approach.

Again, then you should ask in the appropriate newsgroup. Maybe not
comp.lang.misc but comp.infosystems.www.authoring.misc as this is more
about technique than language.
I guess I am not in the wrong newsgroup, since this questions if
javascript is capable of doing something or not.

"javascript" is capable of a great many things that are not particularly
on-topic here because "javascript" is primarily used as an interfacing
programming language.
The why is here:

I have a server, and it streams data to a particular user. It is
important for me to keep the connection with the user live, even if
the user goes to a different page (inside my domain). I am not using
frames, and I don't want to popup another window to keep this
connection live.

Tough luck.
Couple of things I tried:

1) serializing/deserializing the XMLhttpRequest & storing it on the
globalStorage & userData (this is very unlikely to work, because it is
kind of absurd)

I think it could work, but it would not be very efficient.
2) setTimeout(function() {return obj}, 5 seconds ) on unload() and
catching it back on load() (this is very unlikely to work, because it
is absurd)

It cannot work because setTimeout() is a method of a Window object that is
referred to be the `window' property of the Global Object of the global
execution context. That context is destructed on navigation.
3) keeping the connection live on the browser's visited page, and
access it through the current page (this doesn't work either)

Same reason.
4) putting all my site inside a frame, and using a 0size frame with
the object (that works, but makes everything ugly)

Same reason. No navigation in that frame, no destruction of the global
execution context associated with it.
5) opening a popup window and keeping the object there (that works
too, but oppup blockers block me)

See above.
[...]
Please trim your quotes.

Which part of that did you not get?

http://www.jibbering.com/faq/faq_notes/clj_posts.html


PointedEars
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,979
Messages
2,570,185
Members
46,727
Latest member
FelicaTole

Latest Threads

Top