摘要:在寫游戲服務(wù)器中特別是卡牌一類的游戲經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間為了用戶友好這個(gè)房間號(hào)通常需要限定長(zhǎng)度比如位或者位數(shù)字因此用數(shù)據(jù)庫(kù)的對(duì)用戶不太友好其一是長(zhǎng)度不固定其二是后期房間號(hào)會(huì)很長(zhǎng)所以專門寫了一個(gè)房間號(hào)生成器服務(wù)器其滿足以下
在寫游戲服務(wù)器中, 特別是卡牌一類的游戲, 經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間, 為了用戶友好, 這個(gè)房間號(hào)通常需要限定長(zhǎng)度, 比如4位或者6位數(shù)字. 因此用數(shù)據(jù)庫(kù)的auto_increment對(duì)用戶不太友好, 其一是長(zhǎng)度不固定, 其二是后期房間號(hào)會(huì)很長(zhǎng), 所以專門寫了一個(gè)房間號(hào)生成器服務(wù)器, 其滿足以下需求:
指定生成的的房間號(hào)范圍: 比如[100000, 1000000)
租借過(guò)期: 當(dāng)一個(gè)房間號(hào)被生成后, 若超時(shí)未續(xù)期, 則自動(dòng)釋放(凍結(jié))
房間號(hào)凍結(jié): 當(dāng)一個(gè)房間號(hào)被歸還后, 在指定時(shí)間范圍內(nèi)不會(huì)被重新分配
安裝項(xiàng)目地址: https://github.com/acrazing/uno
安裝:
go get -u github.com/acrazing/uno使用
接口很簡(jiǎn)單:
import "github.com/acrazing/uno" import "context" // 創(chuàng)建一個(gè)worker w := uno.NewWorker() // 配置 w.Init(&uno.Options{ MinValue: 1e5, MaxValue: 1e6, })
// 啟動(dòng)服務(wù) go w.Run(context.Background())
// 生成ID no := w.Rent() if no == 0 { // 如果返回0, 則表示生成房間號(hào)失敗 panic("") }
// 釋放ID w.Return(no)
// 續(xù)租ID ok := w.Relet(no) if ok { // 如果返回false, 表示續(xù)租失敗 }gRPC
gRPC的服務(wù)和消息都已經(jīng)定義好, 可以直接取用:
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)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/30830.html
摘要:在寫游戲服務(wù)器中特別是卡牌一類的游戲經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間為了用戶友好這個(gè)房間號(hào)通常需要限定長(zhǎng)度比如位或者位數(shù)字因此用數(shù)據(jù)庫(kù)的對(duì)用戶不太友好其一是長(zhǎng)度不固定其二是后期房間號(hào)會(huì)很長(zhǎng)所以專門寫了一個(gè)房間號(hào)生成器服務(wù)器其滿足以下 在寫游戲服務(wù)器中, 特別是卡牌一類的游戲, 經(jīng)常需要讓用戶手動(dòng)輸入房間號(hào)加入一個(gè)房間, 為了用戶友好, 這個(gè)房間號(hào)通常需要限定長(zhǎng)度, 比如4位或者...
摘要:使用即可完成一個(gè)很有意思的在線游戲作品。你畫我猜,相信大家對(duì)這個(gè)游戲都很熟悉。我用實(shí)現(xiàn)了你畫我猜這個(gè)游戲。可以修改畫筆顏色,粗細(xì),進(jìn)行撤銷,恢復(fù),清空等操作。第一個(gè)猜完后,游戲時(shí)間縮短為秒。 使用 websocket + vue2 即可完成一個(gè)很有意思的在線游戲作品。你畫我猜,相信大家對(duì)這個(gè)游戲都很熟悉。 我用Vue2 + mint-ui + nodejs + websocket ...
摘要:站的彈幕服務(wù)器也有類似的機(jī)制,隨便打開(kāi)一個(gè)未開(kāi)播的直播間,抓包將看到每隔左右會(huì)給服務(wù)端發(fā)送一個(gè)心跳包,協(xié)議頭第四部分的值從修改為即可。 原文:B 站直播間數(shù)據(jù)爬蟲, 歡迎轉(zhuǎn)載項(xiàng)目地址:bilibili-live-crawler 前言 起因 去年在 B 站發(fā)現(xiàn)一個(gè)后期超強(qiáng)的 UP 主:修仙不倒大小眼,專出 PDD 這樣知名主播的吃雞精彩集錦,漲粉超快。于是想怎么做這樣的 UP,遇到的第一...
閱讀 3689·2021-11-22 15:24
閱讀 1592·2021-09-26 09:46
閱讀 1904·2021-09-14 18:01
閱讀 2600·2019-08-30 15:45
閱讀 3525·2019-08-30 14:23
閱讀 1865·2019-08-30 12:43
閱讀 2914·2019-08-30 10:56
閱讀 799·2019-08-29 12:20