首页 > 解决方案 > 在 Angular11 中发布 JSON 请求并读取 EventStreams

问题描述

尝试按照下面的文章阅读事件流。我没有像文章中那样使用,而是formData使用 Json 来发布。它以 200 响应顺利运行。Even 告诉我们通过网络发送了一些 kb 的数据,但 eventstream 选项卡没有显示任何内容。同样的 curl 在我的终端上工作。

https://medium.com/swlh/how-do-server-sent-events-sse-or-eventsource-work-in-angular-e9e27b6a3295

流的网络调用

网络调用中的 EventStream 选项卡

标签: javascriptangularwebobserver-patternevent-stream

解决方案


如文章所示

    return Observable.create((observer) => {
      const eventSource = this.sseService.getEventSourceWithPost(url, data);
      // Launch query
      eventSource.stream();
      // on answer from message listener 
      eventSource.onmessage = (event) => {
        this.zone.run(() => {
          observer.next(event.progress);
        });
      };
      eventSource.onerror = (error) => {
        this.zone.run(() => {
          observer.error(error);
        });
      };
    });

将此部分更改为

    return Observable.create((observer) => {
      const eventSource = this.sseService.getEventSourceWithPost(url, data);
      // Launch query
      eventSource.stream();
      // on answer from message listener 
      eventSource.addEventListener('EVENT_NAME_FROM_STREAM', (event) => {
        this.zone.run(() => {
          observer.next(event.data);
        });
      };
    });

得到数据显示。但在网络选项卡中,我仍然看不到事件。


推荐阅读