1. 程式人生 > 實用技巧 >Go語言輕量級網路庫、功能庫 GrapeNet

Go語言輕量級網路庫、功能庫 GrapeNet

專案地址: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、平均數容器、有限列表)