Skip to main content

AJAX one way client to server push possible?



I'm trying to write a javascript web app that will communicate with a custom java server using AJAX. My client app needs to send pieces of data at irregeular intervals, sometimes multiple times per second, and does not need any response data from the server. Is there a way to keep an XmlHttpRequest connection open and reuse it to send this data without ever closing or getting a response?





On the client side, I'm going by this post to reuse the XmlHttpRequest: http://keelypavan.blogspot.com/2006/03/reusing-xmlhttprequest-object-in-ie.html and it seems to be working. I'm able to send repeated requests to the server without getting a response.





But on the server side my main problem seems to be with java.net.SocketServer. I'm creating a single SocketServer and putting the accept() method in an infinite loop to handle requests. When a request comes in, the loop fires exactly 3 times with the same request data - this is if and only if I don't write to the outputstream of the socket before closing it. If I write to the stream (aka sending a response to the client), everything works and the request is processed only once and accept() waits for the next one.





Is this kind of thing even possible? To send a one-way stream of data without having the client overhead of handling a response? I could try only processing 1 of every 3 requests in my loop, but I have no idea what's going on behind the scenes here. Thanks!





EDIT - I've realized that everything works as expected using a safari browser on a client computer on the same wifi as the server. The problem of 3 requests being processed only happens when using iphone safari (iphone on the same wifi network). So the question is how the xmlhttprequest is differing between these 2 situations and how to solve/detect the difference.


Comments

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?