Re: SERVLET: Http Connection doesn't send data
On Jan 5, 8:39 am, jmackqu...@gmail.com wrote:
I'm trying to write an application client/server with http protocol,
in JAVA. I need:
- client connects to the server,and after that,
- server continuously sends data to the client (as soon as they can be
obtained by an other server-side resource !! )
Client-side code is:
HttpURLConnectionis = httpConnection.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
String toWrite=null;
do {
toWrite=(String)ois.readObject();
}
while(Thread.currentThread().isAlive());
is.close();
Server-side code (part of method doGet() of a servlet) is:
ObjectOutputStream os= new ObjectOutputStream
(response.getOutputStream());
Signal sig; // Signal is a Java Class containing String messages
int i=0;
while (i<10) {
sig = obs.getSignal(); // "obs" is a LinkedBlockingQueue!!!!
os.writeObject(new String(sig.getValue())); // sig.getValue()
returns String
}
The problem is that data sent from server arrives to client ALL at the
end of the while-cicle, and not one by one!
Istead, by using a code like this:
ObjectOutputStream os= new ObjectOutputStream
(response.getOutputStream());
int j=0;
while(true){
os.writeObject(new String("\n SERVER: count"+j));
j++;
}
...data arrives one by one!
I made lots of tries, variously modifying the code..and I noticed that
the problem is in using blocking methods
(in fact, the behaviour is same if forcing the current Thread to sleep
- eg Thread.sleep(1000) -).
Where's the problem??
Try os.flush();
Best wishes
Alex