0

我在 Angular 中使用 StompJS ng2-stompjs。请求通过 JWT 身份验证。

我写了一个 HttpInterceptor,当任何 http 响应返回错误 401 时注销用户。我想用 websocket 实现类似的行为。我的应用程序仅在某些页面上使用 websocket 通信,因此我无法跟踪其令牌是否过期。我还必须使用 Stomp,因为我必须订阅主题,据我所知,通过标准 typescript 或 rxjs websockets 是不可能的。

所以问题如下:当令牌错误时,我可以在控制台中看到以下错误:

client.js:274 WebSocket 连接到 'ws://...' 失败:HTTP 身份验证失败;没有可用的有效凭据

如果我启用了调试模式,Stomp 还会在控制台中通知我连接被关闭。但是,当我收到这样的身份验证错误时,我想知道代码级别。

在这个 ng2stomp 实现中,我只能找到一个webSocketErrors$在发生此错误时通知我的主题,但它只发回一个Event没有相关数据的打字稿。

从这个错误中,我无法判断是突然失去连接,还是后端错误,或者用户实际上是未经授权的,因此当我发现这个时我无法强制注销。

我还没有尝试使用标准的 StompJS 库,但我不确定它是否可以捕捉到这个错误。除了使用 Stomp 之外,我也不知道是否有任何其他方式可以订阅主题,因为这是我迄今为止找到的唯一解决方案。

任何建议表示赞赏。

4

1 回答 1

0

我试图在不编写工作代码的情况下回答。

有几点:

ng2-stompjs 是 StompJs 的一个薄包装器,因此,在能力方面两者不太可能有所不同。

于 2021-08-09T12:49:32.023 回答