如何为每个用户处理多个Node.js服务器之间的通信?

时间:2017-01-06 08:15:23

标签: javascript html node.js sockets session

我正在尝试让用户只登录一次,并在所有服务器上显示他的信息。对用户信息所做的任何更改都将立即可用于所有服务器。这可能不是让每个用户分别为每个服务器“登录”吗?

类似于$_SESSION的php,但是对于Node.js

设计1 -

我认为最好做什么,但不知道如何在服务器之间共享套接字数据,也许使用PHP的$_SESSION之类的东西? Design 1

设计2 -

我目前正在做的事情:

  1. 用户使用socket.emit到main.js
  2. main.js将用户信息添加到emit
  3. main.js会发送到相应的服务器
  4. 适当的服务器会发回main.js
  5. main.js最终回退给用户
  6. 这看起来非常低效且感觉不对

    Design 2

1 个答案:

答案 0 :(得分:3)

如果您的信息主要是静态信息,则可以尝试类似JWT的信息。这些是加密签名的令牌,您的身份验证服务器可以提供这些令牌,用户可以随身携带。此令牌可能包含有关您希望每个服务器在没有用户访问的情况下可用的用户的信息。

如果不是,您可能正在考虑在所有服务器之间共享数据库,并将它们作为它们之间的同步点。

根据我们的评论进行更新(以便稍后删除):

如果您决定使用自动包含的JWT令牌,则根本不需要访问数据库。这些令牌将包含所需的所有信息,但对最终用户而言是透明的,无法深入了解其内容。

此外,一旦理解了JWT标准,就不一定要使用JSON对象,因为它只是一种可以由另一种方法切换的序列化方法。

您在身份验证时(或在需要时)向您的用户提供其中一个令牌,然后您需要该用户在向其他服务器请求信息或行为时将该令牌提供给其他服务器。令牌将成为您的同步方法。