Java遊戲服務器3

1)編碼
    消息長度(short int-->2個字節) + 消息編號(short int--》2個字節) + 消息體

2)Protobuf協議文檔
    (1)syntax="proto3";

    (2)命名格式
       XxxCmd:  UserEntryCmd
       XxxResult: UserEntryResult

    (3)定義
        enum {

        }

        message xxx {

        }

    (4)根據定義,使用工具包導出(去protobuf官網 protoc-3.11.1-win64/bin/protoc.exe)
        protoc.exe --java_out=${目標目錄} .\GameMsgProtocol.proto

    (5)報錯是因爲: 沒有引入proto包

3)解碼器
    根據命令號,解碼後,fireChannelRead到下一個流程

4)字節數組
  web則是thttp協議

5)粘包
    消息包太大的話,會分多次發送--》跟淘寶上一下子買了很多東西,會打成很多個包裹。

6)將2個數值轉化爲1個短整型:
    byte a = (byte)1;
    byte b = (byte)2;
    
    short i = (short)(a << 8 | b);



7)佔位符
    切換爲TCP Socket的話,就需要自己寫入長度。因此用了佔位符。

8)消息編號(MsgCode) + 消息體

9)能接到消息後,誰也看不到誰。
    說明服務器只是收消息了,沒有回消息(沒有廣播)。

    因此用戶入場後,我們需要把消息廣播出去: 誰進來了,長啥樣。

10)ChannelGroup: 必須用static修飾,因爲要羣發,所以所有的人需要共用一個。

11)構建起模式: Builder

12)'進入請求' + '進入請求'返回
     '周圍有什麼人'請求 + '周圍有什麼人'返回。

13)客戶端發到服務器--》將字節數組變爲對象。(解碼器: Inbound)
     服務器把數據發送給客戶端--》對象變爲字節數組。(編碼器: 出站Outbound)

14)新的用戶進來後,沒有發: 當前誰在場

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