동접 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로 들어가 인코딩된 텍스트를 전송하여 결과를 확인합니다.
- XML: http://sandbox-api-index.withhive.com/modules/apitest/test/
담당자
- 담당자 : 플랫폼2실 데이터기술팀 문재호(munjaeho@com2us.com)
- 참조 : 플랫폼2실 데이터기술팀(DT@com2us.com)
- 동접키 발급 요청 : 솔루션아키텍트팀(PP_SA@com2us.com)
동접 전송하기
- Request URL
http://api-index.qpyou.cn/modules/gameuser/currentuser/ |
http://sandbox-api-index.withhive.com/modules/gameuser/currentuser/ |
Post |
XML |
value
(post data를 body로 전송 시에는 사용하지 않음 ex. C++, wininet) |
- post data
game |
게임 구분이 가능한 key
담당자에게 등록요청 필수
ex) tinyfarm_KR, derbydays_SEA 와 같이 발급 |
server |
서버별 접속자 전송시 서버 구분 정보
영문,숫자 조합으로 20자 까지 가능 (서버 구분이 없을 경우 0)
ex)
<server>0<<server> => 가능
<server>1</server> => 가능
<server>tinyfarm01</server> => 가능 |
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" ?> <gameuser> <game>tinyfarm_KR</game> <server>0</server> <reqkey>c4b40eb7d241654b74ec825976f42618</reqkey> <date>2016-06-23 16:23:00</date> <user>1</user> </gameuser> |
|
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 없음 |