是否可以在不使用websocket的情况下触发nestjs中的事件?

问题描述 投票:0回答:1

我有一个用 Nestjs 开发的应用程序。我目前使用 webhook 从外部服务获取通知,但我需要将从 webhook 获取的信息返回给客户端。除此之外,我需要对登录用户进行验证,看看该通知是否属于他。

研究我发现 Nest 使用 SSE,但我不知道这是否是这种情况的正确解决方案。

我不知道解决这个问题的最佳方法是什么。我看到很多使用 websockets 的案例,但我想评估其他替代方案。

websocket socket.io nestjs server-sent-events
1个回答
0
投票

我在这里看到两个需要思考的范围,如果我错了,请纠正我。首先是查询该外部服务,其次是在检查后向连接的用户发送通知(如果他/她有权接收通知),对吗?

对于第一部分,您需要分享更多有关概念的细节。什么样的网络钩子? REST 调用、GraphQL 订阅、WebSockets 还是其他协议?同步还是异步?应用程序是否等待来自该外部服务的某种消息,或者是否定期查询该服务?什么样的通知?

对于第二部分,最明显(也是完整)的解决方案是使用 GraphQL 订阅。如果不是 GraphQL,而是 REST API,那么这就是 RESTful 的巨大缺点。我想 WebSockets 会做得很好,SSE 也会做得很好,我想这一切都取决于前端应用程序。

对于验证检查,我不会进行太多高级验证,因为它绝对没有优化。我宁愿考虑生成一些与浏览器共享的非对称加密密钥,或存储在 JWT 令牌中,因此每当前端收到一堆字符时,它就会将其发送回后端进行解密。如果可以通过签名进行验证,并使用 JWT 的密钥为该用户解密,那么这意味着用户已获得授权。我认为这在 SSE 和 Push API 中是开箱即用的,但不是 100% 确定......

© www.soinside.com 2019 - 2024. All rights reserved.