前端流式输出的三种实现方法

前言

在前端开发中,流式输出(streaming output)通常是指逐步输出数据,而不是等待所有数据准备好后一次性显示。这种技术在处理大型数据集、实时数据或需要逐步加载内容的情况下非常有用。下面介绍几种实现流式输出的方法,包括使用 Fetch API 和 EventSource。

1. 使用 Fetch API 实现流式输出

通过 Fetch API 和可读流(Readable Streams),可以在响应到达时逐步读取和处理数据。这在处理大文件或实时更新时非常有效。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<title>Stream Output Example</title><h1>Streamed Output</h1>
<div id="output"></div>
 
 
    async function streamData() {
        const response = await fetch('https://jsonplaceholder.typicode.com/posts');
        const reader = response.body.getReader();
        const outputDiv = document.getElementById('output');
        let result;
 
        // 读取数据流
        while (!(result = await reader.read()).done) {
            const chunk = new TextDecoder().decode(result.value);
            // 将新接收到的部分添加到输出
            outputDiv.innerHTML += chunk + '<br>';
        }
    }
 
    streamData();

2. 使用 Server-Sent Events (SSE)

Server-Sent Events (SSE) 是一种技术,可以从服务器向客户端推送实时数据。它基于HTTP协议,使用EventSource API。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<title>SSE Example</title><h1>Server-Sent Events Example</h1>
<div id="output"></div>
 
 
    const outputDiv = document.getElementById('output');
    const eventSource = new EventSource('https://example.com/sse'); // 替换为你的SSE服务URL
 
    eventSource.onmessage = function(event) {
        outputDiv.innerHTML += 'Received: ' + event.data + '<br>';
    };
 
    eventSource.onerror = function(event) {
        console.error('Error occurred:', event);
        eventSource.close(); // 关闭连接
    };

3. 使用 WebSockets

WebSockets 提供了全双工通信,允许在客户端和服务器之间进行实时数据传输。这适用于需要双向通信的场景。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<title>WebSocket Example</title><h1>WebSocket Example</h1>
<div id="output"></div>
 
 
    const outputDiv = document.getElementById('output');
    const socket = new WebSocket('wss://example.com/socket'); // 替换为你的WebSocket服务URL
 
    socket.onopen = function() {
        console.log('WebSocket connection established');
    };
 
    socket.onmessage = function(event) {
        outputDiv.innerHTML += 'Received: ' + event.data + '<br>';
    };
 
    socket.onerror = function(error) {
        console.error('WebSocket error:', error);
    };
 
    socket.onclose = function() {
        console.log('WebSocket connection closed');
    };

总结

  • Fetch API:适合在HTTP响应中逐步获取和处理数据流。
  • Server-Sent Events:用于从服务器推送实时事件,简单易用。
  • WebSockets:提供双向通信,适合需要实时交互的应用。

到此这篇关于前端流式输出的三种实现方法的文章就介绍到这了,更多相关前端流式输出实现内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/navsub/js/14196.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部