原创 sproto

sproto是一套由skynet自身提供的協議,類似google protobuffers,但設計更簡單,也更利於lua使用,同時還提供了一套簡單的rpc方案. RPC 需要一個消息包的主體格式,它必須有一個叫type的字段,描述RPC

原创 cocos studio 3.10 垂死掙扎版1.0

cocos studio 3.10 垂死掙扎版是專門針對lua的版本,主要修改的方面如下, 1.導出方式,自定義的lua導出方式,文件小,文件內容不會因爲組件改變而改變。 2.腳本綁定,直接在編輯器裏對ui文件綁定lua文件 3.組件綁定

原创 MongoDB 內存數據庫

skynet 集成了mongo的driver,monogo_collection:findOne,mongo_collection:findAndmodify,mongo_cursor:next,mong

原创 nodejs代理

最近搞了臺阿里雲給客戶做服務器,但是蛋疼的GFW,讓我在阿里雲上npm操作舉步維艱,在重試N次之後,接近崩潰邊緣。 於是上網四處搜索,發現有一個cnpm的方法似乎可以解決問題,但是發現cnpm上鏡像好像並不齊全,而且也是各種卡住,所

原创 Multicast 組播

local mc = require "multicast" 引入multicast 模塊後,你可以使用skynet的組播方案,你可以自由創建一個頻道,並可以向其中投遞任意消息,頻道的訂閱者可以收到投遞的消息. 你可以通過new 函

原创 DataCenter 數據中心

datacenter 可用來在整個skynet網絡做跨節點的數據共享. 當你需要跨節點通訊時,雖然只要持有其他節點的地址,就可以發送消息,但地址如何獲得,卻是一個問題. 早起的skynet提供了具名服務的特性,可以給一個服務起一個唯一的

原创 MsgServer 請求迴應模式

snax.msgserver 是一個基於消息請求和迴應模式的網關服務器模板.它基於snax.gateserver定製,可以接收客戶端發起的請求數據包,並給出對應的迴應. 和service/gate.lua不同,用戶在使用它的時候,一個用

原创 Cluster 集羣

skynet 支持兩種集羣模式。 如果你僅僅是單臺物理機的計算能力不足,那麼最優的策略是選用更多核心的機器,在同一進程內,skynet 可以保持最高的並行能力,充分利用物理機的多核心,遠比增加物理機性價比高得多 master/s

原创 Http 服務器

skynet 從 v0.5.0 開始提供了簡單的 http 服務器的支持。skynet.httpd 是一個獨立於 skynet 的,用於 http 協議解析的庫,它本身依賴 socket api 的注入。使用它,你需要把讀寫 socke

原创 LoginServer

skynet 提供了一個通用的登陸服務器模版 snax.loginserver 。 架構 先做如下定義: 登陸服務器 L 。這即是本篇介紹的 LoginServer登陸點若干 G1, G2, G3 ...認證平臺 A用戶 C當 C

原创 Coroution 協程

由於skynet框架的消息處理使用了coroution,所以不可以將lua原本的coroution API直接和skynet服務混用,否則,skynet的阻塞api(見LUAapi)將調用coroution.yield而使得用戶寫的cor

原创 CodeCache

skynet修改了lua的官方實現(可選),加入了一個新特性,可以讓多了lua VM共享相同的函數原型1,當在同一個skynet進程中開啓了大量lua VM時,這個特性可以節省不少內存,且提高了VM啓動速度. 這個特性的使用,對一般用戶

原创 CriticalSection 臨界區保護

同一個skynet服務中的一條消息處理中,如果調用了一個阻塞api,那麼它會被掛起,掛起過程中,這個服務可以響應其他消息,這很可能造成時序問題,要非常小心處理, 換句話說,一旦你的消息處理過程有外部請求,那麼閒到的消息未必比厚道的消息先

原创 Config 配置

啓動skynet服務器需要提供一個配置文件莫誒之文件的編寫可以參考examples/config,下面是一個簡單的配置文件範例: root = "./" thread = 8 logger = nil harbor = 1 addre

原创 GateServer 網關

skynet提供了一個通用模板lualib/snax/gateserver.lua來啓動一個網關服務器,通過TCP連接和客戶端交換數據. TCP 基於數據流,但一般我們需要以帶長度信息的數據包的結構來做數據交換,gateserver做的