服務端開發筆記三 pemelo開發過程中遇到的問題

2021-07-02 18:45:47 字數 972 閱讀 4024

問題:

首先需要弄明白的是,乙個客戶端只有乙個pomelo例項。

當使用者登入之後,不退出,重啟客戶端。

伺服器檢測到玩家已經登入,會將之前的登入踢下線,客戶端會觸發disconnect事件,在disconnect中斷開pomelo鏈結。

這樣導致當前的鏈結也被斷掉了。

解決方案:

目前處理方式是在disconnect中不斷開鏈結。但這樣處理有個問題,當伺服器鏈結不上時,會有乙個報錯。

問題:資料庫中有兩種表user和level,新增了乙個觸發器,當在user表中插入資料時,

在level表中也生成一條記錄,儲存玩家初始的關卡資料。

這種的設定看上去合符邏輯,沒有問題,但是執行的時候問題出來了。

當玩家建立完角色之後,會馬上請求返回玩家的資訊,這是就會去查詢玩家的level表。

這時候觸發器有可能會沒有完成資料庫中level表的操作,導致讀出來的資料為空。

解決方案:

由於觸發器操作在程式中沒辦法控制,所以只好拋棄它了。

在user表中插入資料的之後,繼續在level表中增加一條記錄,然後在返回資料。

問題:要全服排行榜,要拿到所有服上玩家的資料做比較。由於分布式架構,玩家的資料庫之中,是拿不到彼此的資料。

解決方案:

拿出乙個單獨的伺服器來生成玩家的uid,使得所有的玩家uid都不重複。

然後將需要比較的玩家資料比如說戰力或者等級,也放到對應的uid記錄中。

這樣,每次排行只需要到排行伺服器來查詢就可以了。

問題:要實現乙個全服的競技場,每報名的玩家會根據報名的順序分到乙個組,每組一百人。

這樣的話就需要在伺服器啟動的時候把生成乙個groupid,如果滿一百人,就放到下乙個groupid中。

但是現在不知道在什麼地方初始化這個groupid。

解決方案:

在**中將groupid置空,第一次使用的時候檢測這個值,如果為空則分配乙個起始的值,然後每次使用時都遞增,並存檔

服務端開發規範Restful

規範了url,提交方式的語義。遵守restful規範,有些東西不言而喻,減少前後端不必要的交流。舉例提交方式 位址說明 get 查 http localhost 8080 book 1查詢id為1的書 post 增 http localhost 8080 book 1新增一本id1的書 delete...

iPhone開發筆記(三)

11 iphone中變數值是否等於字串的判斷方法 objective c string1 isequaltostring 123 12 iphone的framework的目錄 mac developer platforms iphoneos.platform developer sdks iphon...

遊戲服務端開發 一

資料儲存伺服器 遊戲中的資料大致分為靜態配置資料和動態的玩家資料。這裡主要討論玩家資料儲存的解決方案。雖然遊戲應用的寫操作要多於讀操作,但是加入快取層仍然有其必要性。多個應用伺服器啟動時從資料庫讀取資料會在瞬間給資料庫造成巨大壓力,如果將相對靜態的資料以檔案的形式放在應用伺服器本地,可以避免這個問題...