一致結果コールバックAPI¶
マッチングが完了すると、Hiveサーバーは開発者のサーバーからコールバックAPIを要求して、マッチング結果を配信し、レスポンス値を受け取ります。
コールバックAPIをリクエストして一致する結果を配信するための順序は次のとおりです。
- Hiveコンソールで**マッチ統合方法**を
サーバーコールバック
として選択します - Hiveコンソールにコールバックを受信するための開発者サーバーURLを登録します
- マッチングが完了すると、Hiveサーバーはマッチング結果を届けるために開発者サーバーにコールバックAPIをリクエストします
- 開発者サーバーがマッチング結果を正常に受信した場合、HTTPレスポンスステータスコード(
HttpStatus 200
)をHiveサーバーに返します
リクエストURL(開発者サーバーURL)¶
HiveコンソールでコールバックAPIをリクエストして一致する結果を受け取る開発者サーバーURLをAPIエンドポイントとして登録します。このURLは外部からアクセス可能な公開アドレスでなければなりません。
ヘッダーパラメータ¶
コールバックAPIリクエストを行う際のヘッダー値は次のとおりです。
フィールド名 | 説明 | タイプ | 必須 |
---|---|---|---|
X-Match-Signature | 送信されたデータのためにHMAC SHA-256アルゴリズムで暗号化された署名値 | 文字列 | はい |
Note
X-Match-Signature
の値を通じて、一致結果の信頼性を確認できます。
X-Match-Signature
の値は、以下の例のコード(Java)を使用して取得でき、コードで使用されるHMAC SHA-256キーの値はHiveコンソールで見つけることができます。
```java
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class MatchSignature {
private static final String HMAC_SHA_256 = "HmacSHA256";
private static final String UTF_8 = "UTF-8";
public String getSignature(String secret, String httpRequestBody) throws Exception {
SecretKeySpec key = new SecretKeySpec(secret.getBytes(), HMAC_SHA_256);
Mac mac = Mac.getInstance(HMAC_SHA_256);
mac.init(key);
byte[] source = httpRequestBody.getBytes(UTF_8);
return new String(Base64.getEncoder().encode(mac.doFinal(source)), StandardCharsets.UTF_8);
}
}
```
ボディパラメータ(コールバックAPIを介して配信される一致結果)¶
コールバックAPIリクエスト中に送信された一致結果データは以下の通りです。
フィールド名 | 説明 | タイプ |
---|---|---|
gameIndex | 完了したマッチのgameIndex値 | int |
matchId | 完了したマッチのmatchId値 | int |
matchingInfos | マッチを完了したアプリユーザーに関する情報の配列。`playerId`フィールドが`0`のユーザーはボットとして扱われます
| json |
timeoutPlayerInfos | マッチングせずにタイムアウトしたアプリユーザーに関する情報の配列
| json |
コールバックAPIリクエストの例 (Hiveサーバー → 開発者サーバー)¶
curl --location 'HIVE 콘솔에 등록한 앱 개발사 API 엔드포인트' --header 'Content-Type: application/json' --header 'X-Match-Signature: nj2YlgGTlLXcAhrl6ijSgfD71gTWokBiM8WPn72xxg8=' --data '{
"gameIndex": 1,
"matchId": 1,
"matchingInfos": [
{
"matchingId": "1:1_2024-06-05T05:43:28.91_1",
"privateInfos": [
{
"playerId": 100,
"point": 1000
},
{
"playerId": 101,
"point": 1000
}
]
}
],
"timeoutPlayerInfos": []
}'
戻り値¶
HiveサーバーがコールバックAPIリクエストを通じて配信したマッチング結果が開発者のサーバーによって正常に受信された場合、HttpStatus 200
をレスポンスとして返す必要があります。
開発者のサーバーからの応答によると、Hiveサーバーでは次のように処理されます。
HttpStatus 200
レスポンス: 一致結果が正常に完了したと判断され、対応するコールバックAPIリクエストが終了します。HttpStatus 200
以外の値のレスポンスまたはタイムアウト: コールバックAPIは、一致結果を届けるために定期的に再リクエストされます。HttpStatus 200
レスポンスがない、または他のレスポンス値がない: 連続してレスポンスがない場合、システム管理の観点から一定期間、一致結果は届けられません。