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

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex