ReadableStreamによるストリーミング
+server.jsでWeb Streams APIを使用し、大きなレスポンスを段階的にストリーミングします。
「ReadableStreamによるストリーミング」はCoddyKit上の無料Sveltejs Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSveltejs Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Sveltejs Academyコースには全4レッスンが含まれています。
ストリーミングする理由
大きなレスポンスは段階的に送信できるため、クライアントはすぐにデータの受信を開始できます。
ReadableStream API
標準のWeb Streams APIを使用して、ストリーミングレスポンスを構築します。
const stream = new ReadableStream({
async start(controller) {
for (const chunk of source) {
controller.enqueue(new TextEncoder().encode(chunk));
}
controller.close();
}
});
return new Response(stream);Server-Sent Events
リアルタイム更新には、text/event-stream形式のデータをストリーミングします。
チャンク転送
HTTPは、キューに追加された各チャンクを準備でき次第、通信経路へ送信します。
ユースケース
リアルタイムログ、AIによるテキスト生成、ファイルのアップロードとダウンロード、進捗イベントなどに使用できます。
クライアント側
クライアント側でresponse.body.getReader()を使用して、ストリームを読み取ります。
バックプレッシャー
消費側の処理が遅いと、ストリームはデータの生成を一時停止します。生成側でブロッキング処理を行わないようにしてください。
クローズ処理
処理が完了したら、必ずcontroller.close()を呼び出してください。エラーが発生した場合はcontroller.error()を呼び出します。
アダプター
ストリーミングのサポートはアダプターによって異なります。adapter-nodeは動作しますが、一部のエッジランタイムには制限があります。
パフォーマンス
ストリーミングを使うと、Time to First Byte(最初の1バイトまでの時間)が短縮され、体感速度が大幅に向上します。
load と組み合わせる
SvelteKitのストリーミングloadは、時間の経過とともに解決されるPromiseを返します。これは通常のストリームとは異なります。
確認問題
ストリーミングの主な利点は何ですか?
まとめ
ReadableStreamをResponseでラップすると、+server.jsからチャンクを段階的にストリーミングできます。
AI チューターと学ぶ HTML — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 41
- レッスン
- 163
よくある質問
「ReadableStreamによるストリーミング」レッスンは無料ですか?
はい。「ReadableStreamによるストリーミング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Sveltejs Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Sveltejs Academyコースには全4レッスンが含まれています。
「ReadableStreamによるストリーミング」で何を学びますか?
+server.jsでWeb Streams APIを使用し、大きなレスポンスを段階的にストリーミングします。 ブラウザで直接実行するハンズオンコードでSveltejs Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Sveltejs Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSveltejs Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ReadableStreamによるストリーミング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSveltejs Academyレッスンでコードを書いて実行できますか?
はい。すべてのSveltejs Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- +server.js:GET、POST、PUT、DELETE
- RequestとRequestEvent
- JSONレスポンスを返す
- ReadableStreamによるストリーミング