Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为每个用户处理多个Node.js服务器之间的通信?_Javascript_Html_Node.js_Sockets_Session - Fatal编程技术网

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

Javascript 如何为每个用户处理多个Node.js服务器之间的通信?,javascript,html,node.js,sockets,session,Javascript,Html,Node.js,Sockets,Session,我正在尝试让一个用户只登录一次,并在所有服务器上显示他的信息。对用户信息所做的任何更改都将立即适用于所有服务器。不让每个用户分别为每个服务器“登录”就可以做到这一点吗 有点像php的$\u会话,但是对于Node.js 设计1- 我认为最好的做法是什么,但我不知道如何在服务器之间共享套接字数据,可能是使用PHP的$\u SESSION? 设计2- 我目前正在做的事情: 用户使用socket.emit到main.js main.js将用户信息添加到列表中 main.js发送到相应的服务器 相应的服

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

有点像php的
$\u会话
,但是对于Node.js

设计1- 我认为最好的做法是什么,但我不知道如何在服务器之间共享套接字数据,可能是使用PHP的
$\u SESSION

设计2- 我目前正在做的事情:

  • 用户使用
    socket.emit
    到main.js
  • main.js将用户信息添加到列表中
  • main.js发送到相应的服务器
  • 相应的服务器会发回main.js
  • main.js最终返回给用户
  • 这似乎效率极低,而且感觉不对


    如果您的信息主要是静态的,您可以尝试类似的方法。这些是您的身份验证服务器可以提供且用户可以随身携带的加密签名令牌。此令牌可能包含有关用户的信息,您希望每个服务器都可以使用这些信息,而无需用户访问

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


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

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

    此外,一旦理解了JWT标准,就不必使用JSON对象,因为它只是一种序列化方法,您可以通过另一种方法进行切换


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

    如果您的信息主要是静态的,您可以尝试类似的方法。这些是您的身份验证服务器可以提供且用户可以随身携带的加密签名令牌。此令牌可能包含有关用户的信息,您希望每个服务器都可以使用这些信息,而无需用户访问

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


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

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

    此外,一旦理解了JWT标准,就不必使用JSON对象,因为它只是一种序列化方法,您可以通过另一种方法进行切换


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

    因此,基本上我必须为每个用户查询每台服务器上的数据库:/这似乎是一项昂贵的任务。。我的方法(设计2)实用吗?@tery.blargh如果你使用JWT,你不需要访问数据库,你可以直接从令牌中获取信息。我正在研究它,尽管我对JSON没有知识或经验,所以回复需要一段时间。谢谢:)@tery.blargh没问题!如果你掌握了这个理论,你会发现你可以将JSON转换为其他序列化格式,重要的是加密设置。您只是来回发送数据,用户无法访问它。(这也可以成为您的身份验证部分。)因此,这个“令牌”,我基本上是
    向用户发出
    ,并要求他/她使用这个令牌访问我的其他服务器?因此基本上我必须为每个用户查询每台服务器上的数据库:/这似乎是一项昂贵的任务。。我的方法(设计2)实用吗?@tery.blargh如果你使用JWT,你不需要访问数据库,你可以直接从令牌中获取信息。我正在研究它,尽管我对JSON没有知识或经验,所以回复需要一段时间。谢谢:)@tery.blargh没问题!如果你掌握了这个理论,你会发现你可以将JSON转换为其他序列化格式,重要的是加密设置。您只是来回发送数据,用户无法访问它。(这也可以成为您的身份验证部分。)那么这个“令牌”,我基本上是
    向用户发出
    ,并要求他/她使用这个令牌访问我的其他服务器?