I created my own java socket server that doesn't do websocket just plain old socket. I had every message wrapped inside 0x00 and 0xFF. So every message starts with 0x00 and ends with 0xFF. For some reason when I read it from flash once in a while when message size exceed 3000 bytes i get garballed message or message missing a character or incomplete message. This is what I have in flash. Any pointer on this would be greatly appreciated.
private function onData(event:ProgressEvent):void
{
var obj:String;
while(_serviceSocket.bytesAvailable > 0)
{
if(_serviceSocket.readByte() == START_FRAME || _currentBuffer == null)
{
_currentBuffer = new ByteArray();
}
var byte:int;
while(true)
{
try
{
byte = _serviceSocket.readByte();
if(byte == END_FRAME){
obj = _currentBuffer.toString();
processMessage(obj);
_currentBuffer = null;
break;
}else{
_currentBuffer.writeByte(byte);
}
}catch(e:Error){
obj = _currentBuffer.toString();
processMessage(obj);
_currentBuffer = null;
break;
}
}
}
}
Please try below code and check for the output
function onData(event:ProgressEvent):void{
var data:String = "";
var stream:ByteArray = new ByteArray();
socket.writeBytes(stream, 0, 0);
while(socket.bytesAvailable){
data += socket.readUTFBytes(1);
}
trace("data "+ data);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.