重生之我在NestJS中使用EventStream
创始人
2024-11-15 02:32:33
0次

有一个需求是需要长连接等待后台的返回,我们使用的EventStream,在NestJS中使用很简单,框架基本上已经封装好了

0. 如果没有创建项目的,可以先创建一个项目,创建项目的直接跳转到下一个步骤去

  • 全局安装 nest: npm install @nestjs/cli global
  • 创建项目: nest new nest-demo-app

1. 在NestJS中的代码

在 app.constroller.ts 中新建一个方法,如下:

import { Observable } from 'rxjs'; import { Controller, Sse } from '@nestjs/common';  @Controller() class AppController {    @Sse('test/event-stream') // 这个是访问的链接地址 http://localhost:3000/test/event-stream   testEventStream() {     let count = 0;     return new Observable(observer => {       // 调用 observer.next() 这个方法向前端推送消息       setInterval(() => {         count++;         observer.next({ data: new Date().toLocalTimeString() });       }, 3000);        // 调用 observer.complete() 这个方法,表示结束本次推送       if (count > 5) {         observer.complete();         // 或者调用 observer.unsubscribe() 也可以结束推送       }     });   } } 

2. 在前端调用这个接口

const stream = new EventSource('http://localhost:3000/test/event-stream') let count = 0 stream.onopen = () => {   console.log('连接打开'); } stream.onmessage = e => {   console.log(e.data); // 打印获取到的数据,也就是 NestJS 中 observer.next() 中发送的数据   if (count++ >= 5) {     stream.close(); // 主动关闭连接   } } stream.onerror = e => {   console.error(e); // 打印错误日志 } stream.onclose = () => {   console.log('连接关闭'); // 关闭连接  } 

注意:

  1. 前端在一个长连接完成之后,如果没有主动关闭连接,会一直发这个连接,所以在 message 中需要根据条件判断一下,主动关闭连接

相关内容

热门资讯

每日必看教程!微乐小程序黑科技... 每日必看教程!微乐小程序黑科技免费(辅助器),微信小程序怎么开挂(有辅助挂教学)1、让任何用户在无需...
今日公布!微乐小程序免费黑科技... 今日公布!微乐小程序免费黑科技(透视器),微信小程序微乐辅助器教程图片(有辅助挂辅教程)1、完成微乐...
安装程序教程!微乐小程序辅助工... 安装程序教程!微乐小程序辅助工具(透视器),微乐小程序黑科技辅助工具2026最新推荐(证实有辅助挂)...
我来教大家!微乐小程序黑科技免... 我来教大家!微乐小程序黑科技免费(辅助),微信小程序微乐安徽辅助苹果(确实有辅助挂)1)微乐小程序黑...
热点推荐!微乐小程序黑科技免费... 热点推荐!微乐小程序黑科技免费(辅助),微信小程序透视微乐(竟然有辅助挂)1、微乐小程序黑科技免费破...
揭秘几款!微乐小程序免费黑科技... 揭秘几款!微乐小程序免费黑科技(辅助),微信微乐陕西小程序破解器(有辅助挂辅助)揭秘几款!微乐小程序...
重大通报!微乐小程序免费黑科技... 重大通报!微乐小程序免费黑科技(辅助),微乐游戏辅助脚本安装(有辅助挂辅助)1、每一步都需要思考,不...
玩家交流!微乐小程序免费黑科技... 玩家交流!微乐小程序免费黑科技(作弊器),微乐家乡官方app下载(有辅助挂辅教程)1)微乐小程序免费...
教程攻略!微乐小程序黑科技免费... 教程攻略!微乐小程序黑科技免费(开挂),微乐小程序游戏破解器下载(有辅助挂方式)1、不需要AI权限,...
终于清楚!微乐小程序黑科技免费... 终于清楚!微乐小程序黑科技免费(作弊器),微乐小程序辅助教程(有辅助挂秘籍)1、用户打开应用后不用登...