angular调用sse重服务端拉数据

该文章展示了一个Angular服务类(SseService),用于建立和断开与服务器的Server-SentEvents连接。服务利用RxJS的Observable来处理接收到的消息事件和错误。在组件(TestComponent)中订阅此服务,接收来自http://localhost:5000/send的实时数据并在ngOnInit中初始化,同时在ngOnDestroy时清理资源并断开连接。
摘要由CSDN通过智能技术生成
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class SseService {
  private eventSource!: EventSource;

  constructor() {}

  connect(): Observable<MessageEvent> {
    this.eventSource = new EventSource('http://localhost:5000/send');
    return new Observable((observer) => {
      this.eventSource.onmessage = (event: MessageEvent) => {
        observer.next(event);
      };
      this.eventSource.onerror = (error: Event) => {
        observer.error(error);
      };
    });
  }

  disconnect(): void {
    this.eventSource.close();
  }
}

组件中使用

import {Component, OnInit} from '@angular/core';
import {SseService} from 'src/app/services/sse.service';
import {Subscription} from 'rxjs';
@Component({
  selector: 'app-test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.css']
})
export class TestComponent implements OnInit {
  content = 'home';
  subscription!: Subscription;
  constructor(private sseService: SseService) {}

  ngOnInit(): void {
    this.subscription = this.sseService.connect().subscribe(
      (event) => {
        console.log('data', event.data);
      },
      (error) => {
        console.log('error', error);
      }
    );
  }

  ngOnDestroy(): void {
    this.sseService.disconnect();
    this.subscription.unsubscribe();
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值