我在 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 之外,我也不知道是否有任何其他方式可以订阅主题,因为这是我迄今为止找到的唯一解决方案。
任何建议表示赞赏。