2012-06-01 24 views
1

目前,我的遊戲是這樣工作的。在線遊戲通常會如何存儲會話?

用戶使用TCP連接到服務器。 此時,服務器尚未分配播放器對象並將其分配給TCP客戶端對象。

當用戶用他們的用戶名和密碼散列發送LOGIN消息時,服務器檢查數據庫以查看是否全部加起來,如果是,則發送帶有true的LOGIN_ATTEMPT_RESULT消息。然後,服務器分配一個玩家,然後向玩家發送遊戲大廳的狀態,然後服務器從該用戶那裏收到一條消息,然後處理該消息並進行通信。

我不會保留一個會話ID或任何東西,因爲它似乎沒有必要。

這是基本上這樣的遊戲如何做認證和溝通或我錯過重要的東西?

感謝

+1

哪些信息與用戶的數據一起發送,以確保數據實際上來自該用戶,並且沒有人欺騙該用戶? – cytinus

回答

4

保持會話ID是好的,因爲它使TCP數據包注入攻擊(序列猜測)更難,它允許登錄的連續性,即使TCP連接丟失的某些原因。這樣,「會話」和「連接」是不同的,後者可以根據需要重新建立。另外,如果您擴展到多臺計算機,會話ID可用作主機之間傳遞的方式(將重新創建連接,但會話仍然存在)。最後,會話ID可以用作數據庫密鑰(再次,用於在服務器之間傳遞)。

如果你不需要這個,那麼你可以消除會話層。雖然看起來並不像節省很多錢。

+0

+1;我認爲這很有見地。 –