摘要:在寫游戲服務器中特別是卡牌一類的游戲經常需要讓用戶手動輸入房間號加入一個房間為了用戶友好這個房間號通常需要限定長度比如位或者位數字因此用數據庫的對用戶不太友好其一是長度不固定其二是后期房間號會很長所以專門寫了一個房間號生成器服務器其滿足以下
在寫游戲服務器中, 特別是卡牌一類的游戲, 經常需要讓用戶手動輸入房間號加入一個房間, 為了用戶友好, 這個房間號通常需要限定長度, 比如4位或者6位數字. 因此用數據庫的auto_increment對用戶不太友好, 其一是長度不固定, 其二是后期房間號會很長, 所以專門寫了一個房間號生成器服務器, 其滿足以下需求:
指定生成的的房間號范圍: 比如[100000, 1000000)
租借過期: 當一個房間號被生成后, 若超時未續期, 則自動釋放(凍結)
房間號凍結: 當一個房間號被歸還后, 在指定時間范圍內不會被重新分配
安裝項目地址: https://github.com/acrazing/uno
安裝:
go get -u github.com/acrazing/uno使用
接口很簡單:
import "github.com/acrazing/uno" import "context" // 創建一個worker w := uno.NewWorker() // 配置 w.Init(&uno.Options{ MinValue: 1e5, MaxValue: 1e6, })
// 啟動服務 go w.Run(context.Background())
// 生成ID no := w.Rent() if no == 0 { // 如果返回0, 則表示生成房間號失敗 panic("") }
// 釋放ID w.Return(no)
// 續租ID ok := w.Relet(no) if ok { // 如果返回false, 表示續租失敗 }gRPC
gRPC的服務和消息都已經定義好, 可以直接取用:
addr := "127.0.0.1:1234" // server listener, err := net.Listen("tcp", addr) if err != nil { panic(err) } server := grpc.NewServer() uno.RegisterUnoServer(server, uno.Service) uno.Service.Init(&uno.Options{ MinValue: 2, MaxValue: 5, TTF: time.Second, TTL: time.Second, }) go uno.Service.Run(context.Background()) go server.Serve(listener) // client conn, _ := grpc.Dial(addr, grpc.WithInsecure()) client := uno.NewUnoClient(conn) no, err := client.Rent(context.Background(), &uno.Empty{}) log.Printf("rent: %v, err: %v", no, err)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69521.html
摘要:在寫游戲服務器中特別是卡牌一類的游戲經常需要讓用戶手動輸入房間號加入一個房間為了用戶友好這個房間號通常需要限定長度比如位或者位數字因此用數據庫的對用戶不太友好其一是長度不固定其二是后期房間號會很長所以專門寫了一個房間號生成器服務器其滿足以下 在寫游戲服務器中, 特別是卡牌一類的游戲, 經常需要讓用戶手動輸入房間號加入一個房間, 為了用戶友好, 這個房間號通常需要限定長度, 比如4位或者...
摘要:使用即可完成一個很有意思的在線游戲作品。你畫我猜,相信大家對這個游戲都很熟悉。我用實現了你畫我猜這個游戲。可以修改畫筆顏色,粗細,進行撤銷,恢復,清空等操作。第一個猜完后,游戲時間縮短為秒。 使用 websocket + vue2 即可完成一個很有意思的在線游戲作品。你畫我猜,相信大家對這個游戲都很熟悉。 我用Vue2 + mint-ui + nodejs + websocket ...
摘要:站的彈幕服務器也有類似的機制,隨便打開一個未開播的直播間,抓包將看到每隔左右會給服務端發送一個心跳包,協議頭第四部分的值從修改為即可。 原文:B 站直播間數據爬蟲, 歡迎轉載項目地址:bilibili-live-crawler 前言 起因 去年在 B 站發現一個后期超強的 UP 主:修仙不倒大小眼,專出 PDD 這樣知名主播的吃雞精彩集錦,漲粉超快。于是想怎么做這樣的 UP,遇到的第一...
閱讀 842·2019-08-30 15:55
閱讀 1415·2019-08-30 13:55
閱讀 1993·2019-08-29 17:13
閱讀 2847·2019-08-29 15:42
閱讀 1337·2019-08-26 14:04
閱讀 1025·2019-08-26 13:31
閱讀 3277·2019-08-26 11:34
閱讀 837·2019-08-23 18:25