<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      H5游戲性能優化系列-----協議相關優化

      H5通訊協議這一塊兒最長將的搭配應該是WebSocket+Protobuf這種模式吧,本篇就聊一下protobuf相關的優化。

      Protobuf基本流程

      1. 導入protobuf庫
      2. 一般是后端定義協議文件,xxx.proto
      3. 現在的引擎都是要求寫Ts文件的,所以要生成協議類的.d.ts,這樣寫協議處理時才有代碼提示
      4. 直接加載proto文件,然后用protobuf庫動態生成消息類在內存中, 或者直接用pbjs等命令生成協議類的js代碼

       

      Protobuf的一些問題

      在一些小游戲平臺,比如微信小游戲平臺,protobuf是不能直接加載proto文件然后動態生成協議類的,必須要將proto文件生成出對應的協議類js文件,這在proto協議比較少的時候,問題不是很明顯,如果有成千上萬個協議消息,生成的js會很大,進游戲的時候就必須要多加載這部分的js代碼。

      解決方法有以下幾點:

      1. 協議定義的復用,比如各種消耗, costType, costNum, 可以定義成公用的,在其他協議類需要用到時直接引用這個公用的類型。
      2. pb生成的協議類js中,我們通過參數控制,只生成必要的函數即可。比如一個消息類,明確知道只會出現在前端發送給后端的過程中,那么生成這個協議的類中,只需要出現encode編碼函數即可,因為前端不需要解碼,同樣對于明確知道是服務器返回的協議類型,只需要出現decode函數即可,不需要encode函數。
      3. 為什么在小游戲平臺用不了動態加載proto這種形式,最終原因是protobuf的庫中使用了eval或者new Function這種小游戲平臺不支持的方式,花點時間魔改protobuf庫,將用string生成函數的相關代碼改成直接返回對應函數,截取一部分修改示意:

      image

         4. 如果覺得改protobuf的js庫麻煩又怕改了之后出bug,但是又不想生成協議類的硬代碼,可以選擇不用protobuf,  選擇其他同時兼容web和微信小游戲的協議框架, 或者直接使用json結構,加上msgpack或者zlib壓縮成二進制?

       

      posted @ 2025-09-12 18:21  落幕夜未央  閱讀(26)  評論(0)    收藏  舉報
      主站蜘蛛池模板: AV人摸人人人澡人人超碰| 蜜臀av久久国产午夜福利软件| 久久不见久久见免费影院www日本| 亚洲国产区男人本色vr| 18禁无遮挡啪啪无码网站| 国产欲女高潮正在播放| 人人妻人人妻人人片av| 日本中文字幕不卡在线一区二区 | 国产精品大全中文字幕| 国产免费久久精品44| 狠狠亚洲色一日本高清色| 无码人妻斩一区二区三区 | 国产精品自拍视频第一页| 久久精品亚洲精品国产色婷| 女人被爽到高潮视频免费国产| 日韩中文字幕亚洲精品| 免费人成在线视频无码| 自拍偷在线精品自拍偷99| 免费夜色污私人影院在线观看| 车险| 国产熟女高潮一区二区三区| 久久久久香蕉国产线看观看伊| 日本久久久www成人免费毛片丨| 少妇人妻偷人免费观看| 国内自拍第一区二区三区| 26uuu另类亚洲欧美日本| 国产在线精品成人一区二区| 人人澡超碰碰97碰碰碰| 亚洲欧洲av一区二区久久| 亚洲一区二区经典在线播放| 中文字幕国产精品专区| 久久精品av国产一区二区| 久久午夜色播影院| 一本无码av中文出轨人妻| 久久精品视频一二三四区| 亚洲精品一区二区天堂| 亚洲国产亚洲综合在线尤物| 北岛玲中文字幕人妻系列| 欧美黑人又粗又大又爽免费| 国产区精品福利在线观看精品| 色噜噜亚洲男人的天堂|