游戲服務器框架:canoe-server

jopen 10年前發布 | 12K 次閱讀 canoe-server

canoe-server是一個游戲服務器框架。

該框架是過去游戲服務器開發過程中提煉出來的一些可通用的底層機制,因水平有限,其中可能會有BUG或疏漏。框架自有其包含的主要功能如下:

  1. 標注方式的通訊處理,解耦業務邏輯與通訊邏輯:
  2. </ol>

    @CanoeCommand(value = GameProtocol.C_EXIT, roleRequired = true)
    public void onExit(Request request, ResponseSender responseSender) {
        Session session = request.getSession();
        session.setRole(null);
    }

    1. 事件管理機制,并且包含標注方式的事件偵聽,該機制在我們自己項目里的解耦業務邏輯與通訊邏輯起到與上一條同等重要的作用。
    2. </ol>

          @EventListener(event = SessionEvent.ROLE_CHANGED)
          public void onGameStart(Event<Session> event) {
              Session s = event.getTarget();

          if(s.getRole() == null)
          {
              exit();
          }
      }</pre> <ol class="task-list">
      

    3. 一個簡單的線程池模型,可根據需求分組,并且根據開發者提供的一致性代碼來實現數據一致性,該線程池同時支持順序實行和定時執行功能,且可保證定是執行與順序執行的數據一致性,在提供合理的一致性代碼前提下無需加鎖。如下代碼,即將任務交給system組處理,并且根據userId來保證數據一致性,即該用戶相關的所有操作在一個線程里。
    4. </ol>

      scheduler.submit(()->{doSomething();}, "system", user.getId());

      1. 框架里還封裝了一個和fcgi通訊的小工具,在我們項目里用于和PHP通訊之用。
      2. </ol>

        示例應用可以查看canoe-chat,因時間有限,無法提供完備的文檔,對該代碼有興趣者取之,可隨意修改以供己用。

        項目主頁:http://www.baiduhome.net/lib/view/home/1415932132930

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!