我试图让用户只登录一次,并在所有服务器上获取他的信息。对用户信息所做的任何更改都将立即适用于所有服务器。是否可以在不让每个用户分别为每个服务器“登录”的情况下完成此操作?
有点像 php 的 $_SESSION
,但适用于 Node.js
设计 1 -
我认为最好做什么,但不知道如何在服务器之间共享套接字数据,也许使用 PHP 的 $_SESSION
之类的东西?
设计 2 -
我目前在做什么:
- 用户使用
socket.emit
到 main.js - main.js 将用户信息添加到发射中
- main.js 发送到适当的服务器
- 适当的服务器发送回 main.js
- main.js 最终返回给用户
这看起来效率极低并且感觉不对
最佳答案
如果您的信息主要是静态的,您可以尝试类似 JWT 的内容。这些是您的身份验证服务器可以提供且用户可以随身携带的加密签名 token 。此 token 可能包含有关用户的信息,您希望每个服务器都可以使用该信息,而无需用户访问它。
如果不是,您可能会考虑在所有服务器之间共享数据库,并将其作为它们之间的同步点。
<小时/>根据我们的评论进行更新(以便稍后删除):
如果您决定使用自动包含的 JWT token ,则根本不需要访问数据库。这些 token 将包含所需的所有信息,但对于无法深入了解其内容的最终用户来说是透明的。
此外,一旦您了解了 JWT 标准,您就不必使用 JSON 对象,因为它只是一种序列化方法,您可以切换为另一种方法。
您可以在身份验证时(或在需要时)向用户提供这些 token 之一,然后要求该用户在向其他服务器请求信息或行为时向其他服务器提供该 token 。该 token 将成为您的同步方法。
关于javascript - 如何为每个用户处理多个 Node.js 服务器之间的通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41501586/