xh's blog
文章
分类
标签
时间线
文章
分类
标签
时间线

标签

共 31 个标签

AI1大模型基础1React5docker1nginx1Vue313ElementPlus5TypeScript7MongoDB1Vue1网络请求1操作系统4网络协议分析2网络安全2软件定义网络3SSE12BroadcastChannel4实习6Vitest2JavaScript2Python2CS21网络基础1Nignx1前端部署1Nuxt2SSR2Docsify1Latex1fetchApi1Vuepress1

对基础 SSE 中流的处理的解读

2025/11/26 代码解读SSEfetchApi

解析

这是一段实现前端流式接收和处理 SSE(Server-Sent Events)数据的代码,它没有使用浏览器原生的EventSource,而是采用fetch配合流式读取来获取并处理数据,从而实现了逐字输出的效果。下面我们来逐部分解析。

🌟 注意核心是在processStream函数内部,当处理完一个数据块后,它再次调用reader.read().then(processStream),从而形成一个递归调用链,直到流结束(done为true)

阅读全文

SSE简介

2025/11/24 说明文档SSE

浏览器SSE(Server-Sent Events,服务器发送事件)是一种基于HTTP的技术,允许服务器主动将实时数据推送给客户端(如网页浏览器),而无需客户端反复请求。

SSE简介

SSE基本介绍

🔍 SSE的核心特性

SSE的核心工作机制是,客户端通过创建一个EventSource对象与服务器建立持久连接。服务器则通过发送具有特定Content-Type: text/event-stream头信息的响应,来保持此连接开放并持续推送数据。

其关键特性包括:

阅读全文

SSE实践

2025/12/1 说明文档SSE

概述

该实践基于nodejs的express框架搭建的后端,然后通过vuejs的前端进行请求学习。

后端部分通过设置SSE必需的响应头以及相应的定时器发送数据来建立sse接口,前端部分则通过eventSource.value = new EventSource(sse数据接口地址)来进行连接,利用eventSource.value.onopen,eventSource.value.onmessage 以及 eventSource.value.addEventListener('自定义事件名',函数)来实现对后端数据的接收。

阅读全文

SSE服务代码解读

2025/11/25 代码解读SSE

完整代码地址:sseService.js

这是一个功能完整的SSE(Server-Sent Events)客户端服务类,用于接收后端实时推送的设备状态变化通知。以下是对代码的详细解读:

🏗️ 整体架构设计

单例模式实现

// 创建全局单例实例,确保整个应用只有一个SSE连接
let sseServiceInstance = null
const getSseService = () => {
  if (!sseServiceInstance) {
    sseServiceInstance = new SSEService()
  }
  return sseServiceInstance
}
阅读全文

sseService文件解读(BroadcastChannel版)

2025/11/27 代码解读SSEBroadcastChannel

源文件地址:sseServiceWithBroadcastChannel.js

相关文章:BroadcastChannel方式解决sse连接数限制

阅读全文

SSE最大连接次数突破

2025/11/27 经验总结BroadcastChannelSSE

前言

在我们建立sse连接的时候,由于HTTP/1.1的限制,在该协议下,大多数现代浏览器(如Chrome、Firefox、Edge)对同一域名(协议+域名+端口)的并发连接数限制通常为6个。这意味着,同一个浏览器标签页(或同一浏览器实例)中,对相同域名最多只能同时建立约6个SSE连接,超出此数量的新连接会被浏览器阻塞,直到有连接被关闭。

若需要突破此限制,可考虑以下方案:

解决方案 描述 适用场景
升级至HTTP/2 HTTP/2支持多路复用,可在单个TCP连接上并行处理多个请求和响应,从而从根本上解决连接数限制问题。 长远和推荐方案,需服务器和浏览器支持,通常要求使用HTTPS。
多域名/多端口策略 将SSE连接分散到不同的子域(如sse1.example.com, sse2.example.com)或不同端口号。每个子域或端口享有独立的6个连接限额。 过渡方案,适用于暂无法升级HTTP/2的情况,但配置管理稍复杂。
优化连接使用 利用标签页切换及时关闭不再需要的SSE连接,或尝试将多个数据流合并到一个SSE连接中传输(通过不同事件类型区分)。 基础优化,良好的连接管理习惯。
阅读全文

实习周总结5

2025/12/5 经验总结实习SSE

sseDemo演练

概述

由于个人之前未进行sse的代码训练,便进行了sse的相关代码训练操作。

本周主要对SSE的项目进行了系统的训练,通过Nodejs构建后端来进行sse的本地演练测试。该实践基于nodejs的express框架搭建的后端,然后通过vuejs的前端进行请求学习。

后端部分通过设置SSE必需的响应头以及相应的定时器发送数据来建立sse接口,前端部分则通过eventSource.value = new EventSource(sse数据接口地址)来进行连接,利用eventSource.value.onopen,eventSource.value.onmessage 以及 eventSource.value.addEventListener('自定义事件名',函数)来实现对后端数据的接收。

阅读全文

实习周总结4

2025/11/28 经验总结实习SSEBroadcastChannel

详细总结

此处包含我个人对项目代码的一些详细解读,当然为了撰写效率,其包含了ai的总结部分,但基本思路和知识是对的就行。

对于SSE的基本知识:SSE简介 | xh's blog

对于源项目代码的解读:SSE服务代码解读 | xh's blog

阅读全文

sseService源代码(BroadcastChannel版)

2025/11/27 codeBroadcastChannelSSE

介绍

这里是最后突破了sse连接数限制的源代码,应用了BoradcastChannel的主从模式进行突破。当然主标签页的选举逻辑是先到先得,最先进行加载的标签页为主标签页。若主标签页被删除或者刷新,会进行重新选举。LocalStorage中始终存储了已有标签页的id数组以及主标签页的id以及最大id的值,便于快速为新标签页添加id和快速的选举。同时也包含了主标签页的心跳检测机制,每30秒检查主标签页状态,发送ping消息后立即设置五秒的定时器,主标签页收到后回复pong,如果主标签页成功回复会自动清除定时器,如果回复超时进行重新选举。

阅读全文

sseService.js

2025/11/25 codeSSE

介绍

显然这里是封装了一个类来实现SSE,其中开头的disabled是应用于全局禁用的,这个由实际环境进行配置。然后后续对类创建了全局的实例实现并进行了导出。

阅读全文

后端部分代码

2025/12/1 codeSSE

介绍

这里是SSE实践练习的前端组件部分页面

阅读全文

SSEDemoFronted.vue

2025/12/1 codeSSE

介绍

这里是SSE实践练习的前端组件部分页面

阅读全文