Angular : 如何拦截Server-Sent事件请求?

Angular : How to intercept Server-Sent Event request?

我编写了一个 angular 拦截器来向我的请求添加一些 headers。 SSE请求之前一切正常,没有被拦截!

@Injectable()
export class SessionUserDataInterceptor implements HttpInterceptor {

  constructor(@Inject(SESSION_USER_DATA) private userData: SessionUserData) {}


  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    const setHeaders = {};

    if (this.userData.line) {
      setHeaders['Line'] = this.userData.line;
    }

    if (this.userData.profil) {
      setHeaders['Profil'] = this.userData.profil.id;
    }

    return next.handle(request.clone({setHeaders}));
  }
}

SessionUserData 只是 SessionStorage.

的包装

我已尝试将 headers 添加到我的 SSE 连接,但它也不起作用。

const es = new EventSource(url, {headers: {Line: 'XXX', Profil: 'YYY'}} as any);

感谢任何帮助。

HttpInterceptor 模式仅适用于 HttpClient 发送的请求。这意味着 EventSource 没有被捕获,普通的 XMLHttpRequest 也没有。您可以做的最好的事情是将拦截器中请求的实际转换移动到一个实用程序函数,您可以在拦截器内部调用它,也许还可以调用一个包含 EventSource 功能

的自定义服务