I have a Socket that I'm using to talk to a server. The problem is I'm not getting progress events for some time, up to 5 minutes, sometimes longer. Has anyone seen this type of thing? I can't find anything online about this except one vague post with no solution.
Some details... The socket connects, and I get the connect event, then write a request to the server. I see this request going out over the wire (using a sniffer) to the server, and I see the server response start to stream back. So it's clear that the request and server responding parts are okay. But I'm not getting the progress event to read data. At some point it starts reading, at which point, over 3500+ bytes have come in and are waiting to be read. I know that many cuz once it does show up, that's how many are available. Before the event does come, I have 0 available bytes, according to the socket bytesAvailable field. So I can't even try to start reading on my own (already tried that).
This is not happening on all client machines. In fact, only people on their home machines have seen this problem, and no one within our company network has seen it. But I have the same lastest flash debug version as someone else off network and cannot duplicate what they see.
I have the whole policy file thing sorted out, and that is definitely not the problem. In fact, we duplicated on a machine with the trust path set up so it's not even asking for the policy file, so it can just connect to the server port. As said, I can see the network traffic over the wire, and it's working just fine, except the client side Flex code is not getting the event and so can't read the data that's arriving.
This is extremely frustrating, because the problem has only just manifested once people were able to use it from home. We cannot find any common ground otherwise (browser, Flash version, firewalls, ISPs, nothing).
There is a known URLStream issue that it will buffer the first few k of data in some browsers--could this be related? Have you checked Adobe JIRA for known Socket issues?
I have been looking (didn't really know of JIRA before), however the closest I've found is some reports that there needs to be 1 or 2 kb of data to arrive before you get a progress event. I'm clearly seeing much more than that. The main example that Adobe gives for using sockets is for telnet, and I don't believe that negotiating telnet sessions even requires nearly that many bytes.
The suggestiong is to force the server to send padding or something. Plus I'm not developing the server, it's an existing system. And that doesn't explain the fact that when this is over the internet from people's home machines this fails but so far not on any mac or any internal machine on our internal network.