동접 로그 API
Note
API로 제공하는 동시접속 로그의 집계 방식이 달라졌습니다. HIVE SDK v4.14.4부터는 HIVE SDK가 애널리틱스 서버 API로 전송함에 따라, 게임 스튜디오에서 동시접속 유저 수를 직접 호출해 집계하던 방법을 이용하지 않아도 됩니다. 이제 동접 로그 집계도 HIVE에 맡기세요.
동접 API의 기본사항 확인하기¶
API 통신 방식¶
- 동접 API는 HTTP 프로토콜을 이용한 XML 데이터 통신을 제공합니다.
- XML은 base64 encoding하여 전송해야 합니다.
- POST 방식으로 XML 텍스트를 value parameter를 이용하여 전송하는 방식과 parameter 없이 body로 전송하는 방식을 제공합니다.
- PHP cURL은 value parameter를 이용하여 XML 텍스트를 전송하는 방식이 적합합니다.
- C++이나 wininet은 value parameter를 이용하지 않고 post data를 body로 XML 텍스트를 전송하는 방식이 적합합니다.
- 결과는 base64 encoding된 XML 로 반환하며 결과값 확인 후 실패 시 재송신이 필요합니다.
- 서비스 오픈 이전에는 테스트 서버로 연동 테스트를 진행하고 서비스 오픈 후에는 상용 서버로 전송합니다.
- 서비스 중인 경우에도 테스트 서버 연동은 필수입니다.
- 전송 간격은 매시 정각을 기준(한국 시간)으로 2분 단위로 API를 호출하여 전송합니다. (ex. 13:00, 13:02, 13:04 … )
- 동접기준은 게임서버에 따라 다릅니다.
- 웹서버는 최근 2분간 요청 유저의 유니크 수를 전송합니다.
- 소켓서버는 서버에 접속되어 있는 유저 수를 전송합니다.
API 테스트¶
- 웹브라우저에서 아래 URL로 들어가 인코딩된 텍스트를 전송하여 결과를 확인합니다.
담당자¶
- 담당자 : 플랫폼2실 데이터기술팀 문재호(munjaeho@com2us.com)
- 참조 : 플랫폼2실 데이터기술팀(DT@com2us.com)
- 동접키 발급 요청 : 솔루션아키텍트팀(PP_SA@com2us.com)
동접 전송하기¶
- Request URL
상용 URL | http://api-index.qpyou.cn/modules/gameuser/currentuser/ |
---|---|
Sandbox URL | http://sandbox-api-index.withhive.com/modules/gameuser/currentuser/ |
HTTP Method | Post |
Data Format | XML |
Parameter | value (post data를 body로 전송 시에는 사용하지 않음 ex. C++, wininet) |
- post data
필드명 | 설명 |
---|---|
game | 게임 구분이 가능한 key 담당자에게 등록요청 필수 ex) tinyfarm_KR, derbydays_SEA 와 같이 발급 |
server | 서버별 접속자 전송시 서버 구분 정보 영문,숫자 조합으로 20자 까지 가능 (서버 구분이 없을 경우 0) ex) |
reqkey | 동접 정보 고유키 동접 정보를 전송하는 서버에서 생성하는 고유키 MD5 인코딩 권장 reqkey 값으로 중복처리 보장 |
date | 동시접속자 정보의 생성일시 ‘년-월-일 시:분:초’의 형식으로, 초단위는 ‘00’ 으로 처리 한국 시간을 기준으로 하며, API 호출 시간 간격인 2분 단위로 처리 ex) 2016-06-23 16:24:00 |
user | 동시접속자 수 |
- Response
필드명 | 설명 |
---|---|
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=
- result Code
코드값 | 설명 |
---|---|
100 | 동시접속자 정보 저장 성공 |
101 | 중복요청 존재로 미처리 (reqkey 중복) |
200 | Parameter error (입력데이터 없음) |
201 | Parameter error (필수정보 없음) |
202 | Parameter error (입력데이터 형식이 맞지 않음) |
203 | Base64 Encoding Error (base64 인코딩 되지 않음) |
204 | Xml 형식 맞지 않음 |
300 | DB error |
301 | 동접데이터 합산 수치가 동일한 경우 ex) server01 동접자 수 = 100, server02 동접자 수 = 0 server01 + server02 동접자 수가 동일할 때 발생 |
302 | game key 없음 |