我正在构建一个聊天应用程序,我使用 sse 实现了实时聊天功能,我使用 keycloak 作为 idap,为了允许身份验证,我必须使用名为 EventSourcePolyFill 的自定义 EventSource 实现,我的前端是用 Angular 构建的, 我正在尝试做这样的事情,但我是 js 新手,
private getEventSource(url: string): EventSourcePolyfill {
return new EventSourcePolyfill(url, {
headers: {
Authorization: 'Bearer ' + this.kcService.getToken,
},
});
}
当我在开发工具中看到承载者时发现它是:承载者[object Promise]
看到
[object Promise]
表示令牌正在异步返回。在这种情况下,您需要await this.kcService.getToken
。
允许的最简单方法是使
getEventSource()
异步。这意味着您需要等待对该函数的调用。依此类推,向上调用堆栈。
另一种方法是确保您已提前获取了 keycloak 令牌,并将其作为参数传入:
private getEventSource(url: string, token: string): EventSourcePolyfill {
return new EventSourcePolyfill(url, {
headers: {
Authorization: 'Bearer ' + token,
},
});
}