五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity ET 框架 分布式網(wǎng)絡(luò)消息通信 詳

2022-12-10 15:48 作者:觀鈴的夢(mèng)  | 我要投稿

DEMO配表

StartMachineConfig
StartProcessConfig@s
StartSceneConfig@s

ActorMessageSenderComponent.Instance.Send 會(huì)將消息體或流完整的發(fā)到 對(duì)應(yīng) 進(jìn)程

再通過(guò)NetInnerComponent處理

ActorMessageSenderComponent.Instance.Call 會(huì)將消息體或流完整的發(fā)到 對(duì)應(yīng) 進(jìn)程 再通過(guò)NetInnerComponent處理


DEMO 流程


當(dāng)客戶端發(fā)送登錄請(qǐng)求 ? 到Realm

隨機(jī)拿到Gate對(duì)應(yīng)的SceneConfig后 用其InstanceId(包含了Gate內(nèi)網(wǎng)的進(jìn)程號(hào))對(duì)Gate 進(jìn)程 的內(nèi)網(wǎng)進(jìn)行通訊

ActorMessageSenderComponent.Instance.Call

拿到目標(biāo)內(nèi)網(wǎng)進(jìn)程 從Realm內(nèi)網(wǎng)建立 拿到對(duì)應(yīng)編號(hào)的Channel 與 Gate內(nèi)網(wǎng) 沒(méi)有就連接 并發(fā)送消息

ProcessActorId processActorId = new ProcessActorId(actorId);

processActorId.Process 對(duì)應(yīng) 了 目標(biāo)(Gate)

processActorId.ActorId 對(duì)應(yīng) 將 當(dāng)前進(jìn)程注入 修改 為了回執(zhí)

實(shí) ActorId 是 Gate 的 SceneConfig InstanceId

虛 ActorId 是 為了Gate的內(nèi)網(wǎng)收到消息后 知道 消息是由哪個(gè)內(nèi)網(wǎng)進(jìn)程發(fā)出

當(dāng)Gate服務(wù)端內(nèi)網(wǎng)收到消息時(shí) 通過(guò) SessionStreamDispatcherServerInner 分發(fā) 處理 R2G_GetLoginKey

G2R_GetLoginKey 是內(nèi)網(wǎng)消息體

虛 ActorId 是 為了 拿到 回執(zhí) 的 對(duì)應(yīng)內(nèi)網(wǎng)(Realm)將 InnerMessageDispatcherHelper.HandleIActorRequest 處理完 拿到 對(duì)應(yīng) IActorResponse 再拿到來(lái)源或與來(lái)源(Realm)建立連接 發(fā)回

內(nèi)網(wǎng)消息 分發(fā) 的 實(shí) ActorId 為 沒(méi)什么用 這里 對(duì)應(yīng) Gate 的 SceneConfig 的 InstanceId

Realm服務(wù)器 內(nèi)網(wǎng)拿到 后 通過(guò) SessionStreamDispatcherServerInner 分發(fā) 處理 G2R_GetLoginKey

將對(duì)應(yīng)的tcs(類似TaskCompetedTask)SetResult();

await 完成 得到 Key 返回給客戶端



當(dāng) 客戶端 發(fā)送 進(jìn)入 地圖 的 消息 外網(wǎng)消息解析 常規(guī)

MessageHelper.SendToClient 最終調(diào)用

ActorMessageSenderComponent.Instance.Send(actorId, message);

actorId 為 客戶端 連接的 Gate Session InstanceId

當(dāng)Gate服務(wù)端內(nèi)網(wǎng)收到消息時(shí) 通過(guò) SessionStreamDispatcherServerInner 處理 自行處理 拿到 Session 發(fā)送

根據(jù) 發(fā)來(lái)的ActorId 拿到原來(lái) 的 Session 發(fā)送 (這里看上去雞肋 但轉(zhuǎn)移Map時(shí)有用 這也是為什么不在C2G_EnterMapHandler直接拿到Session 返回的原因

M2M_UnitTransferRequest 將 Unit 轉(zhuǎn)移到對(duì)應(yīng)地圖Map

await LocationProxyComponent.Instance.Lock

調(diào)用 ActorMessageSenderComponent.Instance.Call 發(fā)送 ObjectLockRequest Location 內(nèi)網(wǎng) 收到后調(diào)用

鎖住unit的Id 在time秒后解鎖 解鎖后 會(huì) 記入定位字典

協(xié)程中 若時(shí)間到之前 已經(jīng) 被 UnLock lockInfo被Dispose InstanceId置為0 返回退出

調(diào)用 ActorMessageSenderComponent.Instance.Call 發(fā)送 M2M_UnitTransferRequest 給 對(duì)應(yīng) Map 內(nèi)網(wǎng) 收到后調(diào)用

后 回執(zhí) 給 Gate Gate 處理

將對(duì)應(yīng)的tcs(類似TaskCompetedTask)SetResult();

await 完成 解鎖 Dispose Unit

解鎖時(shí)注入的response.NewInstanceId 是 Unit 所在 Map 的 進(jìn)程號(hào) 因此可以 通過(guò) 此NewInstanceId知道Unit重設(shè)后所在內(nèi)網(wǎng)進(jìn)程

而最新unit.Id對(duì)應(yīng)的InstanceId可以通過(guò) LocationProxyComponent.Instance.Get 獲得

ActorLocationSenderComponent消息通訊會(huì)自動(dòng)獲得


當(dāng)客戶端切換地圖時(shí)

發(fā)送消息體 C2M_TransferMap 是 IActorLocationMessage 內(nèi)網(wǎng)消息體 Gate外網(wǎng)接收

詢問(wèn)Location服務(wù)器 要 Unit 當(dāng)前的 InstanceId 以獲得對(duì)應(yīng) 內(nèi)網(wǎng)進(jìn)程

再發(fā)送給 對(duì)應(yīng) 的 Map 內(nèi)網(wǎng)服務(wù)(NetInnerComponent) 去接收 C2M_TransferMap 的流

再 用 Map 內(nèi)網(wǎng)服務(wù) SessionStreamDispatcherServerInner 去處理 內(nèi)網(wǎng)方式

Map 處理 下

轉(zhuǎn)移到另一個(gè)內(nèi)網(wǎng)Map服務(wù)

會(huì)拿到客戶端與Gate連接的Session 的 InstanceId 通過(guò)ActorMessageSenderComponent.Instance.Send方式將 消息體發(fā)送給Gate內(nèi)網(wǎng) 再由 Gate內(nèi)網(wǎng) SessionStreamDispatcherServerInner 解析 M2C_StartSceneChange 外網(wǎng)消息體

回執(zhí)給Gate結(jié)果


當(dāng)客戶端右鍵行走

發(fā)送 C2M_PathfindingResult 在 連接的Gate 外網(wǎng) SessionStreamDispatcherServerOuter 分發(fā)

將消息發(fā)送給 unit 所在 服務(wù)對(duì)應(yīng)內(nèi)網(wǎng)進(jìn)程 (Map

然后 Map 內(nèi)網(wǎng) 收到后 SessionStreamDispatcherServerInner 分發(fā)

檢測(cè)為內(nèi)網(wǎng)處理的消息 IActorLocationMessage 繼承 IActorRequest

再回執(zhí)給 Gate 完成


Unity ET 框架 分布式網(wǎng)絡(luò)消息通信 詳?shù)脑u(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
石棉县| 贡觉县| 沧州市| 平邑县| 文昌市| 富源县| 集安市| 股票| 桓仁| 长寿区| 望江县| 弋阳县| 青铜峡市| 镇远县| 衡阳市| 五华县| 任丘市| 靖远县| 长沙市| 措勤县| 江孜县| 汉川市| 密山市| 泉州市| 舞阳县| 阳高县| 五莲县| 宁南县| 根河市| 叙永县| 长丰县| 安图县| 固安县| 金阳县| 鹿泉市| 怀远县| 宁安市| 天等县| 沾益县| 柯坪县| 广德县|