使用现有远程服务器的Socket.io JWT授权

时间:2018-08-07 11:42:02

标签: node.js mongodb authentication socket.io jwt

创建一个用于从超市订购和交付产品的应用程序。在商店创建订单并对其进行处理之后,有必要由最近的司机取走该订单。在这种情况下,客户必须实时查看其订单状态和驾驶员位置。

我计划将逻辑分为实时服务器(RTS)和业务逻辑服务器(BLS)。

  • BLS的任务将包括:用户和驱动程序的授权(JWT令牌:访问+刷新),订单的创建和处理,支付系统。
  • RTS将用于监视所有驱动程序的位置并在Web套接字上创建连接。驾驶员将不得不不断通过GPS发送他的位置,以使其在线。

通信RTS-使用Redis pub / sub将发生BLS。同时,部分订单数据和有关驱动程序的信息将从MongoDB复制并存储在Redis中。因此,该信息将对所有RTS服务器公开可用(如果我将使用水平缩放)。 最初计划通过MongoDB Geosearch搜索与订单最接近的驱动程序,但随后必须不断写下MongoDB中驱动程序的位置-这是对数据库的大量调用。因此,我想通过Redis实现对最接近实体的搜索。

  • BLS使用Node.js + Express + Mongo
  • RTS使用Socket.io

问题

  1. 我是否正确选择了应用程序的体系结构?
  2. 如果在BLS上获得和创建令牌的整个逻辑,那么如何在RTS上实现驱动程序的授权。
  3. 访问令牌可能会随着时间的流逝而过时,但是驱动程序仍然可以连接到RTS服务器。我是否需要断开连接并要求驾驶员再次登录BLS并向我发送新令牌?

0 个答案:

没有答案