簡體   English   中英

如何為每個用戶處理多個Node.js服務器之間的通信?

[英]How do I handle communication between multiple Node.js servers for each user?

我正在嘗試讓用戶僅登錄一次,並將其信息保存在所有服務器上。 對用戶信息所做的任何更改將立即對所有服務器可用。 是否可以在不讓每個用戶分別“登錄”每個服務器的情況下執行此操作?

有點像$_SESSION for php,但是對於Node.js

設計1-

我認為最好的做法是,但不知道如何在服務器之間共享套接字數據,也許使用PHP的$_SESSION類的東西? 設計1

設計2-

我目前正在做什么:

  1. 用戶使用socket.emit到main.js
  2. main.js將用戶信息添加到發射
  3. main.js發出到適當的服務器
  4. 適當的服務器發出回main.js
  5. main.js最終回傳給用戶

這似乎效率低下,感覺不對勁

設計2

如果您的信息主要是靜態的,則可以嘗試類似於JWT的方法 這些是身份驗證服務器可以提供的加密簽名令牌,用戶可以隨身攜帶。 該令牌可能包含有關您希望每個服務器都可用而無需用戶訪問它的用戶的信息。

如果不是這樣,則您可能正在考慮在所有服務器之間共享數據庫,並將其作為它們之間同步的點。


根據我們的評論進行的更新(以便以后可以將其刪除):

如果您決定使用自動包含的JWT令牌,則根本不需要去數據庫。 這些令牌將包含所需的所有信息,但對於不了解其內容的最終用戶而言將是透明的。

此外,一旦您了解了JWT標准,就不必使用JSON對象,因為它只是可以由另一種切換的序列化方法。

您需要在身份驗證時(或在需要時)向用戶提供這些令牌之一,然后要求該用戶在從其他服務器請求信息或行為時向其他服務器提供該令牌。 令牌將成為您的同步方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM