新闻中心

J*aScript_SSE服务器发送事件应用

2025-11-18
浏览次数:
返回列表
SSE是服务器向浏览器单向推送数据的技术,基于HTTP、使用EventSource API实现,适合实时更新场景。1. 前端通过new EventSource()连接后端接口,onmessage接收数据;2. 后端返回Content-Type为text/event-stream,按格式发送data、event、id、retry字段;3. 支持自定义事件监听与断线重连,浏览器自动携带Last-Event-ID恢复;4. 适用于日志监控、行情推送等服务端频繁推送场景,但不支持二进制和IE,需注意代理缓冲配置。

javascript_sse服务器发送事件应用

服务器发送事件(Server-Sent Events,简称SSE)是一种让服务器通过HTTP连接将数据“推送”到浏览器的技术。与WebSocket不同,SSE是单向的——仅从服务器到客户端,适合用于实时更新场景,比如股票行情、新闻推送、日志监控等。J*aScript中的EventSource API为实现SSE提供了原生支持,使用起来简单高效。

基本用法:建立SSE连接

在前端J*aScript中,只需创建一个EventSource实例并指向后端提供的SSE接口即可:

const eventSource = new EventSource('/api/stream');

eventSource.onmessage = function(event) {
  console.log('收到消息:', event.data);
  // 更新页面内容
  document.getElementById('output').innerText += event.data + '\n';
};

eventSource.onerror = function(err) {
  console.error('SSE连接出错:', err);
};

只要服务器保持连接,后续推送的消息都会触发onmessage回调。

后端实现:发送符合格式的数据

SSE要求服务器返回的内容类型为text/event-stream,并且消息需遵循特定格式。每条消息可以包含以下字段:

立即学习“J*a免费学习笔记(深入)”;

  • data: 消息正文
  • id: 事件ID,用于断线重连时定位位置
  • event: 自定义事件名称(可选)
  • retry: 重连间隔(毫秒)

例如Node.js(Express)后端示例:

app.get('/api/stream', (req, res) => {
  res.writeHead(200, {
    'Content-Type': 'text/event-stream',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive'
  });

  const sendEvent = (data) => {
    res.write(`data: ${JSON.stringify(data)}\n\n`);
  };

  // 模拟定时推送
  const interval = setInterval(() => {
    sendEvent({ time: new Date().toISOString(), value: Math.random() });
  }, 2000);

  // 客户端断开时清理
  req.on('close', () => {
    clearInterval(interval);
    res.end();
  });
});

处理自定义事件和断线重连

除了默认的message事件,服务器还可以发送自定义事件:

极限网络办公Office Automation 极限网络办公Office Automation

专为中小型企业定制的网络办公软件,富有竞争力的十大特性: 1、独创 web服务器、数据库和应用程序全部自动傻瓜安装,建立企业信息中枢 只需3分钟。 2、客户机无需安装专用软件,使用浏览器即可实现全球办公。 3、集成Internet邮件管理组件,提供web方式的远程邮件服务。 4、集成语音会议组件,节省长途话费开支。 5、集成手机短信组件,重要信息可直接发送到员工手机。 6、集成网络硬

极限网络办公Office Automation 0 查看详情 极限网络办公Office Automation
// 后端发送
res.write('event: notification\ndata: {"msg": "新通知"}\n\n');

前端监听该事件:

eventSource.addEventListener('notification', function(event) {
  const data = JSON.parse(event.data);
  alert('提醒:' + data.msg);
});

浏览器会自动尝试重连(默认约3秒),可通过retry字段调整:

res.write('retry: 5000\n');

若设置了id,浏览器会在重连请求中携带Last-Event-ID头,可用于恢复断点。

适用场景与注意事项

SSE适用于服务端频繁推送、客户端只读的场景,优势在于基于HTTP、兼容性好、自动重连、轻量。但注意以下几点:

  • 每个EventSource连接对应一个HTTP/1.1长连接,过多连接可能影响服务器性能
  • 不支持二进制数据,只能传输UTF-8文本
  • IE和旧版浏览器不支持EventSource,必要时可用polyfill
  • 反向代理(如Nginx)需配置关闭缓冲,防止延迟输出

基本上就这些,SSE是一种简单实用的实时通信方案,尤其适合不需要双向交互的推送需求。

以上就是J*aScript_SSE服务器发送事件应用的详细内容,更多请关注其它相关文章!


# 适用于  # 江门公司网站建设推广  # seo30cm  # 学校网站建设优化推广  # 房地产推广营销案例  # 铁岭seo优化公司推荐  # 苏州seo排名选哪家  # 上蔡网站推广营销  # 江苏省seo关键词排名优化软件  # 寿光书店网站建设公示  # 罗定推广营销  # 服务端  # 何为  # 二进制数  # 不支持  # 客户端  # javascript  # 只需  # 是一种  # 自定义  # 后端  # websoc  # app  # 浏览器  # nginx  # node  # json  # node.js  # 前端  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  海量存储:机器视觉智能化的核心基石  漫蛙2漫画入口 漫蛙正版网页漫画直达网址  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  composer的"require-dev"部分是用来做什么的?  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  J*a TimerTask中HashMap意外清空的深层原因与解决方案  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  mysql备份恢复性能优化_mysql备份恢复性能优化方法  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  反效果?《战地6》免费试玩开启后玩家数不升反降  电脑IP地址怎么查 查看本机IP地址的几种方法  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享  如何在Promise链中有效终止错误处理后的执行  PHP URL参数传递与500错误调试指南  Linux如何构建多环境配置管理_Linux多环境配置方案  yy漫画网页版官方入口_yy漫画官网登录页面链接  如何在CSS中使用浮动制作导航栏_float实现水平菜单  J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案  必由学在线入口 必由学网页版快速登录入口  微信网页版登录教程_微信网页版登录入口在哪  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  QQ邮箱稳定登录入口_QQ邮箱官方网站网页版使用  Lar*el用户头像管理:实现图片缩放、存储与旧文件安全删除的最佳实践  理解Python模块与全局变量的作用域管理  css链接悬停下划线样式如何自定义_使用::after结合content和transition  我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口  React中useState与局部变量:理解组件状态管理与渲染机制  Go语言HTML解析:利用Goquery精准获取指定元素内容  解决 Express.js 中 PUT 请求密码修改失败的路由配置指南  如何使用 Excel 发布器与 Power BI 分享 Excel 洞察  大麦的“候补”是什么意思 大麦候补购票规则【详解】  Python Socket多播通信中指定源IP地址的实践指南  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  Tabulator表格中精确实现日期时间排序的指南  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  yandex入口引擎手机版 yandex安卓版下载入口  利用5118提升短视频内容效果_5118短视频关键词优化方法  微信群消息显示延迟如何解决 微信群消息刷新优化方法  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  Go语言中JSON数据解码与字段访问指南  海棠账号登录入口_登录海棠账户同步阅读记录  C++如何实现单例模式_C++设计模式之线程安全的单例写法  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台 

搜索