Предоставленное значение 'moz-chunked-arraybuffer' не является допустимым 'responseType - PullRequest
1 голос
/ 16 апреля 2020

первый раз задайте вопрос здесь. Я создаю приложение с помощью native native и expo, и я реализовал аудиоплеер, который воспроизводится из потока Icecast.

Сейчас я пытаюсь добиться того, чтобы получить метаданные из потока Icecast, поэтому у меня есть Установил эту библиотеку: https://github.com/ghaiklor/icecast-parser. Однако, поскольку он использует узел формы http, events и stream module, я установил следующий пакет, чтобы получить их в реагирующем нативе: https://github.com/parshap/node-libs-react-native/, которому удалось заставить библиотеку синтаксического анализа работать.

Теперь проблема, с которой я столкнулся, заключается в том, что после того, как анализатор icecast делает http-запрос для потока, я получаю следующие ошибки:

  • «Предоставленное значение» moz-chunked-arraybuffer 'не является допустимым' responseType '. "
  • " Предоставленное значение ms-stream' не является допустимым 'responseType'. "

После чтения https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestResponseType Я думаю, что проблема в том, что по какой-то причине ответ на запрос относится к тому типу, который и дает мне ошибку. Поэтому я пытаюсь выяснить, есть ли способ преобразовать его или заставить его работать, и мне было интересно, если у вас была идея или вы могли бы указать мне правильное направление?

Вот часть кода, где ошибка происходит:

_makeRequest () {
  const request = (this.getConfig('url').indexOf('https://') === 0) ? 
  https.request(this.getConfig('url')) : http.request(this.getConfig('url'));

  request.setHeader('Icy-MetaData', '1');
  request.setHeader('User-Agent', this.getConfig('userAgent'));
  request.once('socket', function (socket) {
    socket.once('end', this._onSocketEnd.bind(this));
  }.bind(this));

  console.log("I get here")

  request.once('response', this._onRequestResponse.bind(this));

  console.log("I don't get here")

  request.once('error', this._onRequestError.bind(this));
  request.end();

  return this;
}
_onRequestResponse (response) {
  console.log("not getting here")

  const icyMetaInt = response.headers['icy-metaint'];

  if (icyMetaInt) {
    const reader = new StreamReader(icyMetaInt);

    reader.on('metadata', metadata => {
      this._destroyResponse(response);
      this._queueNextRequest(this.getConfig('metadataInterval'));
      this.emit('metadata', metadata);
    });

    response.pipe(reader);
    this.emit('stream', reader);   
  } else {
    this._destroyResponse(response);
    this._queueNextRequest(this.getConfig('emptyInterval'));
    this.emit('empty');
  }

  return this;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...