API การเรียกกลับผลการจับคู่¶
เมื่อการจับคู่เสร็จสมบูรณ์ เซิร์ฟเวอร์ Hive จะขอ API การตอบกลับจากเซิร์ฟเวอร์ของนักพัฒนาเพื่อนำเสนอผลการจับคู่และรับค่าการตอบกลับ
คำสั่งในการส่งผลลัพธ์ที่ตรงกันโดยการเรียกใช้ API callback มีดังนี้
- เลือก วิธีการรวมการจับคู่ เป็น
server callback
ใน Hive console - ลงทะเบียน URL ของเซิร์ฟเวอร์นักพัฒนาเพื่อรับการเรียกกลับใน Hive console
- เมื่อการจับคู่เสร็จสมบูรณ์ เซิร์ฟเวอร์ Hive จะขอ API การเรียกกลับไปยังเซิร์ฟเวอร์นักพัฒนาเพื่อนำเสนอผลการจับคู่
- หากเซิร์ฟเวอร์นักพัฒนาได้รับผลการจับคู่สำเร็จ ให้ส่งกลับ รหัสสถานะการตอบกลับ HTTP (
HttpStatus 200
) ไปยังเซิร์ฟเวอร์ Hive
URL การร้องขอ (URL ของเซิร์ฟเวอร์นักพัฒนา)¶
ลงทะเบียน URL ของเซิร์ฟเวอร์นักพัฒนาที่จะได้รับผลลัพธ์การจับคู่โดยการขอ API callback ในคอนโซล Hive เป็นจุดสิ้นสุดของ 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 Server → Developer Server)¶
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
หรือ Timeout: API จะถูกเรียกขออีกครั้งในช่วงเวลาที่กำหนดเพื่อส่งมอบผลลัพธ์ที่ตรงกัน - ไม่มีการตอบสนอง
HttpStatus 200
หรือไม่มีค่าการตอบสนองอื่น: หากไม่มีการตอบสนองอย่างต่อเนื่อง ผลลัพธ์ที่ตรงกันจะไม่ถูกส่งมอบเป็นระยะเวลาหนึ่งจากมุมมองการจัดการระบบ