событие SOCKET_DATA не получает все сообщения в AS3 - PullRequest
1 голос
/ 13 октября 2011

Моя клиентская программа AS3 не получает все данные, которые были ей отправлены при отправке большого количества сообщений. Я знаю, что это не мой сервер вызывает эту проблему, потому что все сообщения принимаются и отправляются правильно. Мой клиент as3 просто не получает все отправленные данные.

    private function socketData(event:ProgressEvent):void {
       while(this.socket.bytesAvailable}
          var str:String = this.socket.readUTFBytes(this.socket.bytesAvailable);
          trace(str);
       }
    }

Кто-нибудь из вас знает решение?

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

У меня была такая же проблема сегодня днем. Наконец я пришел с решением: На самом деле, вы должны прочитать сообщение побайтно, вот так:

private function socketData (evt:ProgressEvent):void {
    var msg:String = ""; // create a buffer
    while (socket.bytesAvailable) { // while there is byte to read
        var byte:int = socket.readByte();
        if (byte==0) { // if we read the end byte
            trace(msg); // treat your message
            msg = ""; // free the buffer
        } else {
            msg += String.fromCharCode(byte); // else, we add the byte to our buffer
        }
    }
}

Надеюсь, это поможет вам:)

1 голос
/ 12 августа 2012

Проблема решена, мне просто нужно было открыть порт на моем роутере.

...