跳转至

Ccu api

Note

如何聚合并发用户(CCU)日志,因为API格式已更改。由于Hive SDK从Hive SDK v4.14.4开始将日志发送到分析服务器API,游戏工作室不再需要调用并发用户的数量。 只需让Hive SDK来处理。

CCU API 基础知识

API通信方法

  • CCU API通过HTTP协议提供XML数据通信。
  • 确保在编码为base64后发送XML。
  • 发送方式有两种:使用值参数作为POST类型发送XML文本,以及将文本发送到主体而不使用任何参数。
    • PHP cURL适合使用值参数发送XML文本的方法。
    • C++或wininet适合将POST数据设置为主体而不使用值参数的发送XML文本的方法。
  • 结果返回为编码为Base64的XML。如果检查结果失败,请确保重新发送。
  • 在服务开放之前,测试测试服务器上的连接。服务启动后,交付到公共服务器。
  • 测试服务器在服务期间应保持连接。
  • 每小时每两分钟通过实现API发送XML(KST)。(例如,13:00,13:02,13:04……)
  • CCU根据游戏服务器有不同的标准。
    • Web服务器发送过去两分钟请求用户的唯一编号。
    • Socket服务器发送连接到服务器的用户数量。

API 测试

PIC

发送 CCU

  • 请求 URL
常用 URL http://api-index.qpyou.cn/modules/gameuser/currentuser/
沙盒 URL http://sandbox-api-index.withhive.com/modules/gameuser/currentuser/
HTTP 方法 Post
数据格式 XML
参数 value (在将 post 数据发送到主体时不使用,例如 C++,wininet)
  • 发布数据
字段名称 描述
game 区分游戏的关键
确保请求注册到 PIC
例如:以 tinyfarm_KR、derbydays_SEA 发行
server 通过服务器发送用户数据时的服务器标识符
最多可用20个字符,字母和数字的组合(如果不考虑服务器类型,则设置为0)
例如:
\0\ → 可行
\1\ → 可行
\tinyfarm01\ → 可行
reqkey CCU 的唯一密钥
由发送 CCU 数据的服务器生成的 CCU 数据的唯一密钥
推荐编码为 MD5
reqkey 确保重复处理
date 生成 CCU 数据的时间
格式:yyyy-mm-dd hh🇲🇲ss(秒显示为 ‘00’)
基于 KST,每两分钟处理一次,API 实现的间隔
例如:2016-06-23 16:24:00
user CCU 的数量
  • 响应
字段名称 描述
result 结果代码。100=成功保存 查看更多
  • 调用 (原始 XML → base64 编码 → URL 编码)
xml version="1.0" encoding="utf-8" ?
tinyfarm_KR
0
c4b40eb7d241654b74ec825976f42618
2016-06-23 16:23:00
1
curl -X 
POST -d "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxnYW1ldXNlcj4KPGdhbWU+dGlueWZhcm1fS1I8L2dhbWU+CjxzZXJ2ZXI+MDwvc2VydmVyPgo8cmVxa2V5PmM0YjQwZWI3ZDI0MTY1NGI3NGVjODI1OTc2ZjQyNjE4PC9yZXFrZXk+CjxkYXRlPjIwMTYtMDYtMjMgMTY6MjM6MDA8L2RhdGU+Cjx1c2VyPjE8L3VzZXI+CjwvZ2FtZXVzZXI+Cg==" http://sandbox-api-index.withhive.com/modules/gameuser/currentuser/
  • 请求
> POST /modules/gameuser/currentuser/ HTTP/1.1
> Host: sandbox-api-index.withhive.com
> User-Agent: curl/7.55.1
> Accept: */*
> Content-Length: 276
> Content-Type: application/x-www-form-urlencoded
>
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxnYW1ldXNlcj4KPGdhbWU+dGlueWZhcm1fS1I8L2dhbWU+CjxzZXJ2ZXI+MDwvc2VydmVyPgo8cmVxa2V5PmM0YjQwZWI3ZDI0MTY1NGI3NGVjODI1OTc2ZjQyNjE4PC9yZXFrZXk+CjxkYXRlPjIwMTYtMDYtMjMgMTY6MjM6MDA8L2RhdGU+Cjx1c2VyPjE8L3VzZXI+CjwvZ2FtZXVzZXI+Cg==
  • 响应
< HTTP/1.1 200 OK
< Server: nginx/1.8.0
< Date: Wed, 13 Nov 2019 08:54:39 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
<
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+PHJlc3VsdD4zMDI8L3Jlc3VsdD4=

结果代码

代码 描述
100 成功保存 CCU 数据
101 由于重复请求未处理(重复的 reqkey)
200 参数错误(没有输入数据)
201 参数错误(缺少必需数据)
202 参数错误(输入数据格式错误)
203 Base64 编码错误(未编码的 base64)
204 与 Xml 格式不同
300 数据库错误
301 CCU 数据与数据总和相同
例如,server01 CCU = 100,server02 CCU = 0
当 (server01 CCU)+(server02 CCU) 的结果与 server01 CCU 的数量相同时发生
302 没有游戏密钥