客戶端:
Kbengine針對Unity3d專門製作了插件 https://github.com/kbengine/kbengine_unity3d_plugins
插件在安裝之後,會在messages.cs自動生成配置靜態代碼。靜態代碼是根據messages_fixed_defaults.xml形成的
函數id與函數名對應,比如1963行的505對應Client_onLoginBaseappFailed,到xml文件中尋找
UI.cs
可以看到登錄是調用了login()函數
實際上是調用了KBEngine.Event.fireIn(「login」)函數,將事件轉給插件來處理
在KBEngine.cs中KBEngineApp已經registerIn了一系列函數
這時就由KBEngineApp的login()來處理登錄
Login()調用login_loginapp,走到第552行
connectTo()會建立一個socket,與參數中所給的ip和port進行連接,函數中有一個回調函數的參數onConnectTo_loginapp_callback 。
387這裏的Messages.messages["Loginapp_hello"]就是由插件在messages.cs自動生成配置靜態代碼
403行將消息發送給服務端之後,服務端會根據id來做相應的處理,這就是之後再說。現在只要知道服務端會回調客戶端這邊的Client_onHelloCB()
579調用login_loginapp(false)
同hello一樣,這裏會發送消息給服務端,告訴服務端我要調用你的Loginapp_login,也就是調用Loginapp::login()。從而完成登錄操作。
至於服務端是怎麼收到客戶端發來的調用請求以及怎麼處理這些請求,看下一篇