快被資料給塞滿了,用這篇文章來讓自己的思路清晰一點。
我的需求:
一個線上五子棋平台,可以讓使用者線上對戰。不需要註冊,只要輸入使用者名稱就可以開始遊戲。一開始可以選擇開新房間或者加入現有房間。使用者即使中途不小心離開,還是可以連結回來繼續對戰。最多只會有 10 個房間。
現在遇到的問題:
不知道要如何實作身份驗證,好像有超級多種方法。我一直專注在 express-session 的身份驗證機制,所以有點卡卡的。但問題就是 express-sessoion 不知道要如何搭配 socket.io。因為一開始輸入使用者名稱登入進到 Lobby 後,就會由 socket.io 來負責資料的傳輸。這時候 socket.io 要可以確定使用者是已經登入的狀況,才會回傳 Lobby 的資料。現在就卡在不知道要怎麼驗證。雖然幫 socket 寫了 middleware 去使用 express-session 的資料,但只要在大廳刷新都抓不到舊的 session 。
現在就是不知道怎麼驗證身份。照理來說 express-session 應該是可以成功驗證的。雖然每次連接 socket.id 都不一樣,但應該不影響 session 的運作。
還有可能用 socket 是沒辦法設定 session 的。因為 session 的本質還是用 cookies。socket 究竟能不能設 cookies 還不確定。如果不行就沒輒了。變成要自己手動弄一個 session 機制。(雖然也不難就有點麻煩就是了)
說不定 socket 既不能設 cookies 也不能傳 cookies。但這樣有點奇怪,我都已經設了 middleware 了。有一個套件叫 socket-express-session,好像對這個問題有幫助。
現在該來決定要用哪一種方式實現 session。
嗯.........................
我希望越簡單越好,所以可能是先不要自己寫。試這用 express-session 配著 socket 就完成這個身份驗證。