/skynet-rankserver

用skynet做通用排行服务

Primary LanguageHTML

skynet-rankserver

  • 用skynet做排行服务
  • 目标:
    • 作一个通用的全服排行服务
    • 用skiplist支持实时排行
    • 支持http请求+json数据
    • 存储用redis
  • 缺陷:
    • 排行只根据分数从大到小(当分数相同时 则可能出现不稳定性)
  • 每个游戏参数[需要申请,不同游戏之间不能影响]
    • appid: 游戏id
    • appkey: 用来加密的key
    • 加密代码如下:
      var url = "http://192.168.0.12:7211/rankserver?";			
      var obj = {"cmd":"CommitScore", "uid": 1001, "score":99};
      var str = JSON.stringify(obj); //将JSON对象转化为JSON字符
      var sign = hex_md5(str + appkey);
      url = url + "cmd=CommitScore&data=" + str + "&sign=" +sign;
    
  • 接口定义:
    1. 当玩家到达最大分数(不是最大分数不要提交)

      • 请求数据示例:
        {"cmd":"CommitData", "appid":1, "data":{"uid":1001, "name":"andy", "headIcon":"", "score":99} 
      
      • 参数说明:
        cmd:请求命令类型
        appid:游戏id(需要前后台约定好 比如 1:2048 2:flappy bird)
        data:请求参数(json数据)
          uid: 玩家id
          name: 玩家名
          headIcon: 玩家头像url
          score: 玩家分数    
      
      • 返回数据示例:
        {"status":0, "errorMsg":"成功"}
      
      • 参数说明:
        status: 返回值 0 表示正常 其他值则不正常 待定
        errorMsg: 错误消息
      
    2. 请求排行榜

      • 请求数据示例:
          {"cmd":"GetRankList", "appid":1, "data":{"uid":1001, "startindex":1, "endindex":100} 
        
      • 参数说明:
          cmd:请求命令类型
          appid:游戏类型(需要前后台约定好 比如 1:2048 2:flappy bird)
          data:请求参数(json数据)
            uid: 玩家id
            startindex:排行榜开始下标
            endindex:排行榜结束下标(两者之差不能大于100)
          ```
        
      • 返回数据示例:
        {"status":0, "list":[{"rank":1,"uid":1001,"score":99},{"rank":2, "uid":1002,"score":98}]}
        
      • 参数说明:
          status: 返回值 0 表示正常 其他值则不正常 待定
          list: 排行榜数据[其中uid等于自己时为自己的排名信息]
            rank:排名
            uid:玩家id
            name:玩家名
            headIcon:玩家头像
            score:玩家分数 
        
    3. 重置排行榜(清除所有排行数据) 此接口一般用户不能请求 需要权限

      • 请求数据示例:
        {"cmd":"ClearRankList", "appid":1}
      
      • 参数说明:
        cmd:请求命令类型
        appid:游戏类型(需要前后台约定好 比如 1:2048 2:flappy bird)
      
      • 返回数据示例: {"status":0}
      • 参数说明:
        status: 返回值 0 表示正常 其他值则不正常 待定