skynet 網關

網關服務相關代碼 watch_dog gate agent gateserver

 

啓動:

1.啓動watch_dog服務,watch_dog 啓動 gate服務。

2.執行watch_dog start 服務,向其傳入conf。watch_dog 通知 gate 執行open 命令傳入conf。gate 開始lisent。

 

接受客戶端連接:

1.gate 收到新的連接,通知watch_dog.

2.watch_dog啓動一個agent 服務,調用 agent start,傳入gate , client , watchdog

3.agent 通知 gate執行forward,建立agent 和 connect的映射(gate收到client的數據可以通過這個映射直接轉發到agent)

 

 

接受客戶端數據:

gate 接受到數據,如果connect 有agent,那麼直接redirect消息到agent。如果沒有agent send(tostring(msg))到watch_dog

 

客戶端關閉連接:

1.gate收到斷開連接,清除connnect數據。unforward接觸agent 和 connect的映射。發送close消息到watch_dog

2.watch_dog通知gate kick,通知agent disconnect

3.gate 收到kick,close(fd)

4.agent收到disconnect,exit server

 

總結:

watchdog主要負責gate的創建,agent的創建與退出。

gate主要負責的是client連接創建與斷開以及接受到消息轉發給agent。

agent主要負責接受gate轉發的請求,發送心跳,處理業務,然後直接把應答發送給client。

watchdog,gate可以直接使用,agent我們需要定義自己的包體的解析和打包,以及收到消息包的分發處理。

 

 

注意:skynet自帶的網關服務,是以大端進行編碼。前兩個字節爲包體長度。只要符合這種編碼格式,就可以使用網關的編碼和解碼。網關自帶了缺包和粘包的處理在netpack.filter中。

在agent中收到的msg和sz是包體的數據,去除了兩個字節的包體長度。

 

下一篇將介紹protobuf的接入,自定義agent的封包,解包,消息的分發處理。

 

 

 

 

 

 

 

發佈了45 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章