Go語言輕量級網路庫、功能庫 GrapeNet
阿新 • • 發佈:2020-12-02
專案地址:https://github.com/koangel/grapeNet
這個庫是我幾年前就開始維護和釋出的GO語言輕量級網路庫,意在對於小遊戲或輕度遊戲的快速開發支撐,這個庫也是一個GO語言基本功能庫的補充(無複雜的內容)。
以下是庫的介紹:
簡介(Introduction)
Go語言編寫輕量級網路庫 (grapeNet is a lightweight and Easy Use Network Framework)
可用於遊戲服務端、強網路伺服器端或其他類似應用場景,每個模組單獨提取並且擁有獨立的使用方法,內部耦合性較輕。
其實GO語言曾經有過很多強架構的框架,比如GoWorld之類的,已經足夠了,但是我會將庫用於各種輕量級應用不需要過於複雜的內容,所以我設計了GrapeNet,目的是模組獨立化。 你可以拆開只使用其中很小的模組,也可以組合成一個服務端,並且在架構中設計也較為輕鬆,至於熱更新的問題,目前指令碼資料支援熱更新,並且是自動的,只要跑一下UPDATE即可,程式本身稍後測試後釋出(僅支援LINUX)。
本庫更像是一個日常服務端開發的輕量級工具庫集合,用的開心噢。
本庫內的大部分子模組均用於實際線上遊戲產品、防禦類產品以及支付類產品中,經過一定的檢驗,可以放心使用。
網路庫已經經過多個版本調整,可以基本使用。
慢慢更新中,很多坑要填,根據近期測試,除LUA庫外,其他庫均可直接用於商業產品
安裝
go get -u github.com/koangel/grapeNet/...
模組表(Function)
- Lua指令碼繫結管理(可繫結任何型別的函式、執行緒安全且自動推倒型別)
- 日誌庫(底層採用Seelog)
- 函式管理系統(可以根據任何型別引數將其與函式繫結並互相呼叫)
- 流處理
- Tcp網路
- Kcp網路(基於KCPGO的網路基礎庫)
- Websocket網路 (基礎版,相容版)
- Websocketv2網路實驗版 (使用zero-copy upgrader,更低的損耗和更好效率,不相容v1版,開啟壓縮)
- Codec(任意型別註冊物件並在其他位置動態建立該物件)
- CSV序列化模組(通過Tag可以直接序列化到物件或物件序列化為CSV)
- Sign生成庫(自動將結構或map[string]interface{}排序後生成一個sign,可以自行設定KEY)
- Etcd簡易封裝,針對Watcher做任意引數的監聽callback(多Key監聽)
- Continers容器庫,遊戲用揹包容器、帶有鎖的並行LIST等
- Utils多種簡易輔助庫的集合(三元運算子、數值轉換、輕並行執行庫、啟動Daemon、平均數容器、有限列表)