skynet踩坑記錄(一)客戶端連接之watchdog gate agent複雜錯亂關係。

        筆者轉行做遊戲服務器開發有四個月了,現在公司用的是skynet框架,由於之前沒做過服務器開發,現在還是處於邊學習,邊跟項目的情況。由於工作原因,網絡這一塊斷斷續續看了兩個星期,一直沒理解,今天再看的時候,終於懂了skynet監聽網絡端口的流程,也懂了,客戶端是怎麼連接的。果然應了那句話:欠了技術債,早晚要還的。(學習一定要專注啊!!!可以省好多時間。)

       這張圖是在網上找的,非常的清晰,要順着標識看,並結合代碼,就能大致瞭解這個過程。

1.在main中會newservice watchdog啓動看門狗服務,lua start conf給看門狗發送lua消息start參數爲conf

2.在watchdog服務中會,newservice gate啓動網關服務(實際上是通過gateserver.start啓動),然後監聽傳入或者默認的端口。

3.當有新連接接入的時候,實際上是gate server監聽到的。

4.gate server send2watchdog open,並傳入參數。

5.在watchdog server中會創建一個agent(每個連接接入,創建一個agent),並傳入相關的信息(gate,fd,watchdog)。

6.由於有watchdog傳入的信息,agent可以call2gate server forward(用於打開fd,一定要打開,鏈接成功不代表馬上可以讀到數據,需要打開這個套接字,允許fd接收數據,這樣才能接受到client傳入的數據)。

7.當client send requste,首先到達gate。

8.gate server 的message方法中處理,轉發給agent。

9.agent處理之後,在發回給client。

 

需要注意的是:

1.實際上client連接到的是gate server。

2.gate server把具體的client消息轉發給agent由agent處理具體邏輯。

3.gate 與 watchdog 與 agent是相互配合的。

 

至於爲什麼要這麼做,目前我也不是很清楚。。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章