web-dev-qa-db-ja.com

リクエスト本文としてReadableStreamを使用してフェッチ

fetchReadableStream で使用しようとしています。この例では、ReadableStreamは単に「Somedata ...」を無期限に繰り返す必要があります。

fetch('/', {
  method: 'POST', 
  body: new ReadableStream({
    pull: function(controller) {
      console.log('pull called!');
      controller.enqueue('Some data...');
    }
  })
});

これは機能しません。 pullが1回実行されている間、リクエスト本文でデータは送信されません。

POST / HTTP/1.1
Host: example.com
Connection: keep-alive
Content-Length: 0
Origin: https://example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept: */*
Referer: https://example.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8

ReadableStream(または動的データを書き込むことができる任意の種類のストリーム)をフェッチで使用できるようにするにはどうすればよいですか?

または、これがまだ不可能な場合は、これを示していただけますか?ありがとうございました。

注:これは、以下からのより具体的なスピンオフの質問です: HTTPを介してブラウザーからサーバーにデータをストリーミングする方法

17
Brad

現在、この作業を行っています。フェッチ標準のPRについては、 https://github.com/whatwg/fetch/pull/425 を参照してください。それが完了すると、これがブラウザに(ゆっくりと)浸透することが期待できます。

11
Anne