skynet簡(jiǎn)單上手
只是個(gè)人熟悉skynet的一個(gè)流程
首先得知道skynet的運(yùn)行的核心組件
1、service
2、lib
服務(wù)分為c服務(wù)和lua服務(wù)
lib也是一樣的。
服務(wù)之間通信是基于消息的。
詳細(xì)的介紹可以看這篇文章http://manistein.club/post/server/skynet/skynet%E6%BA%90%E7%A0%81%E8%B5%8F%E6%9E%90/
同時(shí)結(jié)合官方文檔的介紹。
接著我們講一講與客戶端通信的原理
1、gate服務(wù)初始化
????然后初始化消息處理函數(shù)

2、gate監(jiān)聽(tīng)端口
3、客戶端請(qǐng)求連接服務(wù)器
4、由消息處理機(jī)制接受來(lái)自socket的連接消息,
5、watchdog新建agent,agent要求gate開(kāi)始接受連接的數(shù)據(jù)
6、gate收到客戶端的data,data由netpack.filter進(jìn)行分包和粘包處理后,交給agent來(lái)解析,并執(zhí)行相應(yīng)的邏輯。
這里順便講一下socket的信息處理。

socketdriver是異步的。會(huì)把結(jié)果以PTYPE_SOCKET的形式發(fā)出。誰(shuí)調(diào)用了start(fd)?api誰(shuí)就會(huì)接受到這個(gè)消息。
但是由于異步不好用,所以由提供了一個(gè)阻塞式的端口。

這樣就比較好理解了。
初級(jí)的使用,就是使用lua來(lái)做module和service。高級(jí)一些,就可以把計(jì)算步驟放在c側(cè),寫cservice和clib。
再高級(jí)一些,就是把skynet的多線程實(shí)現(xiàn)看明白。
當(dāng)然了,service怎么調(diào)用,lib怎么寫。skynet怎么注冊(cè)服務(wù)。就是很基礎(chǔ)的東西,簡(jiǎn)單,但是也需要花一些時(shí)間去熟悉。