簡體   English   中英

node.js,socket.io-網站體系結構

[英]node.js, socket.io - Web site architecture

我有一個網站,無論用戶網站上的哪個位置,我都希望有一個用戶系統可以登錄

使用socket.io,我發現每個HTML頁面都需要自己的socket.io連接。 因此,每當用戶將一個HTML頁面留給另一個HTML頁面時,他將斷開第一個套接字並連接另一個套接字。

保持這種連接的最佳方法是什么? 我不希望用戶手動登錄每個HTML頁面。 我認為將登錄數據作為HTML參數傳遞並使用這些參數自動登錄到服務器是非常愚蠢的,但是目前這是我能想到的唯一解決方案。

理想情況下,socket.io將在整個站點上使用相同的套接字。

考慮到所有帶有用戶系統的網站都具有所需的功能,因此我假設我缺少了一些東西。

這里有兩點很重要:

  • 套接字重置和
  • 認證。

插座斷開

如果離開頁面,則斷開連接。 期。 您無法更改它,並且如果您的頁面是不同的,則套接字將每次都重新連接。 解決此問題的一種方法是創建SPA-具有諸如angular或ember之類的框架的單頁應用程序。 它基本上是客戶端路由-捕獲您的點擊並顯示不同的“頁面”而無需重新加載。 除了保持套接字打開之外,您還可以獲得不必重新加載所有共享資產,網絡開銷等的好處,這在移動設備上特別有用。

但是您不必。

認證

正如其他人所建議的那樣,您的實際問題是您的auth機制做得還不夠。 即使您的套接字被重置,您的新套接字也需要重新進行身份驗證。 有些庫可以完成工作,也可以自己完成。 它可以很簡單,例如拿起cookie或通過套接字連接(如果存在)發送的第一次身份驗證中獲得的某種身份驗證令牌。 然后針對此值進行身份驗證。

通過這樣的身份驗證設置,您可以在常規調用和套接字調用之間共享身份驗證,並且在所有頁面和頁面重新加載時保持身份驗證。

暫無
暫無

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

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