重生之我在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 中需要根据条件判断一下,主动关闭连接

相关内容

热门资讯

黑科技代打(wepoke ap... 黑科技代打(wepoke app)nzt德州总是是有挂!太坑了真是真的是有挂(2024已更新)(哔哩...
第九分钟了解!德州ai辅助软件... 第九分钟了解!德州ai辅助软件推荐,浙江丽水茶苑有辅助器吗,新2025版(有挂秘笈)-哔哩哔哩1、打...
黑科技插件(wpk规律)aap... 1、黑科技插件(wpk规律)aapOker确实真的是有挂!太离谱了一直是真的有挂(2026已更新)(...
6分钟了解!aapoker外挂... 6分钟了解!aapoker外挂实测,沐沐福建麻将十三水分析器,必备教程(有挂秘籍)-哔哩哔哩暗藏猫腻...
黑科技最新(pokernow)... 【福星临门,好运相随】;黑科技最新(pokernow)aapOKER总是是真的有挂!太夸张了一向真的...
第8分钟了解!wepokeai... 第8分钟了解!wepokeai代打逻辑,钱塘十三水有挂是真的吗,扑克教程(果真有挂)-哔哩哔哩1)钱...
黑科技规律(微扑克有辅助挂)鱼... WePoker透视辅助工具核心要点解析‌,黑科技规律(微扑克有辅助挂)鱼扑克app俱乐部原生存在有挂...
第七分钟了解!wepoke有安... 第七分钟了解!wepoke有安卓版吗,哈灵怎么开挂,黑科技教程(有挂头条)-哔哩哔哩1、完成哈灵怎么...
第七分钟了解!红龙扑克有没有挂... 第七分钟了解!红龙扑克有没有挂,丽水都莱罗松,必赢方法(有挂规律)-哔哩哔哩1、完成红龙扑克有没有挂...
黑科技模拟器(德州wpk德州)... 黑科技模拟器(德州wpk德州)wepower原先有挂!太夸张了确实真的有挂(2023已更新)(哔哩哔...