• 传奇3网关之间的通讯原理


    首先是LoginGate(登录网关)

    LoginGate<->LoginServer,LoginGate开启监听后,会启动一个Timer控件,2秒左右向LoginServer发送"%--$",可能是判断是否与LoginServer断开连接,LoginServer接收到%--$,会返回一个"%++$"的信息给LoginGate,表示已经收到消息了。

    Mir3Client<->LoginGate<->LoginServer,客户端连接到LoginGate时,LG会向LS发送一条以%O+Mir3ClientSocket句柄+"/"+Mir3Client的IP+$,当Mir3Client发送账号密码后,LG会向LS发送"%A"+"Mir3ClientSocket句柄"+"/"+收到的消息+"$",然后LS处理该封包后,返回给LG一条这样的消息"%"+"Mir3ClientSocket"+"/"+"回溃给Mir3Client的消息"+"$",然后,LG会把收到的回溃消息处理后发送给Mir3Client,当Mir3Client断开连接的时候,LG会发一个"%X"+"Mir3ClientSocket句柄"+"$"给LS说明该Socket断开连接。

    其次是SelGate(选人网关)

    Mir3Client<->SelGate<->DBServer

    SG<->DB:5100进行通讯他们之间也会像LG<->LS之间发送"%--$"与"%++$",所有从SG->DB的信息都以"%"开头,以"$"结束。当Mir3Client首次连接SG的时候,SG->DB("%O"+"Socket句柄"+"/"+"Mir3Client的IP"+"$"),DB会确定是哪个Mir3,当Mir3Client选定分区后,SG->DB("%A+"句柄"+"/"+"收到的消息"+"$",DB处理后->SG("%"+"句柄"+"/"+"要发到Mir3Client的内容"+"$"),SG处理消息后发送给Mir3Client,当Client断开后发一个"%X"+"句柄"+"$"到DB表示这个句柄断开了。

    最后是GameGate(游戏网关)

    还在研究中。呼呼。研究完了。在完善这部分。

  • 相关阅读:
    CPU高问题排查
    java lambda特性(持续学习+更新)
    零星小记
    redis分布式锁和lua脚本
    webservice之拦截器
    扫一扫
    qq登录
    banner的使用
    surfaceview+mediaplayer
    viewpager加fragment可滑动加radio跟随滑动
  • 原文地址:https://www.cnblogs.com/wkavenger/p/1336029.html
Copyright © 2020-2023  润新知