Насыщенность Websocket в Chrome, блоб указывает на данные, которые не существуют
У меня одна из этих очень сложных проблем в моем приложении.
Я использую веб-сокеты для получения изображений с моего сервера. Я получаю около 50 изображений в секунду в двоичном формате и показываю их на холсте как изображение.
Все работает нормально, но иногда я получаю сообщение об ошибке:
FileReader error. Name: NotFoundError Message: A requested file or directory could not be found at the time an operation was processed.
Мой код выглядит так:
wsVisualizerManager.onMessage = function(e)
{
if (e.data instanceof Blob)
{
var blob = e.data;
this.reader.readAsArrayBuffer(blob);
}
}
В основном я получаю большой двоичный объект и читаю его с помощью объекта FileReader (this.reader), чтобы иметь возможность визуализировать его как изображение.
Как я уже сказал, все работает, но иногда кажется, что из-за получения большего количества изображений, чем те, которые он может обработать, я начинаю получать эту ошибку.
Когда я начинаю получать эту ошибку, я не получаю ее один раз, я получаю ее много раз, поэтому мое приложение блокируется в течение длительного времени. Если я запускаю инструменты разработки Chrome, ошибка немедленно прекращается, и мое приложение снова работает (возможно, этот инструмент разработчика очищает некоторые буферы?).
Итак, я предполагаю, что это какой-то буфер, который полностью заполняется, но мысль в том, что если мне придется потерять старые сообщения, я согласен с этим, но зачем вызывать onMessage с плохо сформированным или несуществующим BLOB-объектом?
Я не знаю точно, как отладить эту ошибку, потому что в websocket API есть всего несколько методов, и никто не позволяет мне получить доступ к буферу или очистить его.
Один из способов создать эту ошибку вручную (в противном случае я получаю ее всего два раза в день) - поставить одну точку останова только в начале onMessage и подождать некоторое время. Затем происходит то, что когда я нажимаю кнопку воспроизведения, я начинаю получать эту ошибку и через несколько секунд я начинаю получать изображения с задержкой. Похоже, что не удаляются полученные изображения или, по крайней мере, не все из них.
Я тоже разрабатываю серверную часть. И я использую C++ с библиотекой websocket++. И моя версия Chrome: 43.0.2357.125 (64-разрядная версия)
Любой ключ к тому, как продолжить отладку этой ошибки или попытаться решить проблему?