当前位置: 首页 > wzjs >正文

福建省建设行业企业资质查询网站百度seo关键词点击软件

福建省建设行业企业资质查询网站,百度seo关键词点击软件,长春师范大学,上海闵行网站制作公司前端流式接收数据全面讲解 前端流式接收数据(Streaming Data Reception)是现代 Web 应用中一个重要特性,尤其在处理实时通信、大文件传输、聊天、视频播放、实时日志监控等场景下。下面我们从概念到技术实现,再到应用示例&#x…

前端流式接收数据全面讲解

前端流式接收数据(Streaming Data Reception)是现代 Web 应用中一个重要特性,尤其在处理实时通信、大文件传输、聊天、视频播放、实时日志监控等场景下。下面我们从概念到技术实现,再到应用示例,系统全面、细致地讲解前端如何流式接收数据。


一、什么是流式接收数据?

传统方式:前端发起请求,后端准备好完整数据后一次性返回。

流式方式:后端逐步返回数据片段(chunk),前端逐块接收和处理,实现边接收边处理

优点

  • 降低延迟,提升用户体验
  • 节省内存
  • 实现实时响应(如 AI 回答、日志推送)

二、前端接收数据的主流流式方式

我们重点介绍以下几种常见方式:

  1. Fetch + ReadableStream(原生流)
  2. EventSource(Server-Sent Events)
  3. WebSocket(双向通信)
  4. ReadableStream + TransformStream(高级控制)

三、Fetch + ReadableStream(推荐)

1. 使用场景

用于接收后端以流式返回的数据,例如:AI 输出、长日志、文件下载。

2. 示例代码

<button id="start">开始接收流数据</button>
<pre id="output"></pre><script>
document.getElementById("start").addEventListener("click", async () => {const output = document.getElementById("output");output.textContent = "";const response = await fetch("/stream-endpoint");const reader = response.body.getReader();const decoder = new TextDecoder("utf-8");while (true) {const { done, value } = await reader.read();if (done) break;output.textContent += decoder.decode(value, { stream: true });}
});
</script>

3. 后端需支持 chunked 传输(如 Node.js、Flask、FastAPI)


四、EventSource(SSE:服务器推送)

1. 使用场景

适用于服务器主动推送数据,如股票价格、消息通知、日志流。

2. 示例代码

<pre id="log"></pre>
<script>
const log = document.getElementById("log");
const evtSource = new EventSource("/sse");evtSource.onmessage = (event) => {log.textContent += `数据:${event.data}\n`;
};
</script>

3. 服务端要求

  • 设置响应头:Content-Type: text/event-stream
  • 使用 data: 格式发送数据
data: Hello
data: World

五、WebSocket(全双工通信)

1. 使用场景

适用于双向通信场景:聊天室、在线游戏、协同编辑等。

2. 示例代码

<input id="msg" placeholder="输入消息" />
<button onclick="sendMessage()">发送</button>
<pre id="chat"></pre><script>
const ws = new WebSocket("ws://localhost:8080");
const chat = document.getElementById("chat");ws.onmessage = (event) => {chat.textContent += `服务器:${event.data}\n`;
};function sendMessage() {const msg = document.getElementById("msg").value;ws.send(msg);
}
</script>

3. 服务端需实现 WebSocket 协议(如:ws 模块、Socket.IO、FastAPI WebSocket)


六、ReadableStream + TransformStream(更高级的控制)

1. 使用场景

需要对流数据做实时处理、转换,例如分割段落、转义数据。

2. 示例代码

const response = await fetch('/stream');const textDecoderStream = new TextDecoderStream();
const transformStream = new TransformStream({transform(chunk, controller) {const timestamped = `[${new Date().toISOString()}] ${chunk}`;controller.enqueue(timestamped);}
});response.body.pipeThrough(textDecoderStream).pipeThrough(transformStream).pipeTo(new WritableStream({write(chunk) {document.body.innerText += chunk;}}));

七、如何选择合适的方式?

需求建议使用方式
单向、实时推送SSE(EventSource)
双向通信WebSocket
边接收边展示长文本/AI输出Fetch + ReadableStream
需要数据转化、过滤TransformStream

八、常见问题与调试技巧

1. 后端未设置 Transfer-Encoding: chunked

确保响应头允许流式传输,否则浏览器会等全部内容加载完才显示。

2. 浏览器兼容性问题

  • ReadableStreamTextDecoderStream 在新浏览器中支持良好
  • SSE 不支持 IE
  • WebSocket 跨域需特别配置

3. 网络中断/重连机制

  • SSE 自带断线重连机制
  • WebSocket 需手动处理重连逻辑

九、延伸:结合前端框架(Vue/React)

以 Vue 为例:

<template><pre>{{ content }}</pre>
</template><script setup>
import { ref, onMounted } from 'vue'const content = ref('')onMounted(async () => {const response = await fetch('/stream');const reader = response.body.getReader();const decoder = new TextDecoder();while (true) {const { done, value } = await reader.read();if (done) break;content.value += decoder.decode(value);}
});
</script>

十、总结

技术单向/双向控制能力浏览器支持用例
Fetch Stream单向新版浏览器AI回答、实时日志等
EventSource单向较好(除IE)消息推送、状态通知
WebSocket双向聊天、游戏、协同编辑
TransformStream单向很强较新浏览器分段解析、关键词处理等
http://www.dtcms.com/wzjs/465189.html

相关文章:

  • 软件下载网站模板网络舆情分析师
  • 东莞网站建设aj工作室站内免费推广有哪些
  • 成都手机网站建设价格最新的国际新闻
  • c 怎么和网站做交互免费建设个人网站
  • 网站代运营收费怎样在百度打广告
  • 强生公司网站建设原则电商平台有哪些?
  • 做相册的网站百度竞价排名案例分析
  • 做付费下载的网站深圳今天重大事件新闻
  • 中国执行信息公开网信息查询网站seo优化徐州百度网络
  • 专门做酒店自助餐的网站十大推广app平台
  • 昆明网建seo外包多少钱
  • 武汉网站建设服务商深圳华强北最新消息
  • 网站制作和网页制作区别池州网站seo
  • 西安正规网站建设报价新手怎样推销自己的产品
  • 做网站上传空间什么意思优化网站性能监测
  • 什么是理财北京网站建设公司百度系app
  • 电商网站类型网站交易
  • 品牌策划方案案例seo网络优化招聘
  • 网站服务器错误403百度资源搜索引擎
  • 抖音广告投放收费标准上海专业优化排名工具
  • 做网站宣传费用记什么科目深圳营销型网站
  • 公众号怎么制作才美丽网站优化是什么意思
  • 网站编辑 seo是什么 百度知道专业seo公司
  • 有没有什么做海报字体的网站如何制作自己的公司网站
  • 南通网站建设协议东莞有哪些做推广的网站
  • 苏州建设建设信息网站独立站seo实操
  • 兼职 网站 小程序 建设app推广拉新一手渠道
  • 门户网站的三大基本特征最好看免费观看高清大全
  • wordpress中引用js css样式搜狗seo快速排名公司
  • 西安北郊做网站网络营销策划的内容