ข้ามไปที่เนื้อหา

API การเรียกกลับผลการจับคู่

เมื่อการจับคู่เสร็จสมบูรณ์ เซิร์ฟเวอร์ Hive จะขอ API การตอบกลับจากเซิร์ฟเวอร์ของนักพัฒนาเพื่อนำเสนอผลการจับคู่และรับค่าการตอบกลับ

คำสั่งในการส่งผลลัพธ์ที่ตรงกันโดยการเรียกใช้ API callback มีดังนี้

  1. เลือก วิธีการรวมการจับคู่ เป็น server callback ใน Hive console
  2. ลงทะเบียน URL ของเซิร์ฟเวอร์นักพัฒนาเพื่อรับการเรียกกลับใน Hive console
  3. เมื่อการจับคู่เสร็จสมบูรณ์ เซิร์ฟเวอร์ Hive จะขอ API การเรียกกลับไปยังเซิร์ฟเวอร์นักพัฒนาเพื่อนำเสนอผลการจับคู่
  4. หากเซิร์ฟเวอร์นักพัฒนาได้รับผลการจับคู่สำเร็จ ให้ส่งกลับ รหัสสถานะการตอบกลับ 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` จะถูกจัดการเป็นบอท
  • matchingId: หมายเลขการแข่งขัน
  • privateInfos: อาร์เรย์ของข้อมูลเกี่ยวกับผู้ใช้ที่จับคู่ในการแข่งขันส่วนตัว ในรูปแบบเดียวกับ timeoutPlayerInfos
  • teamInfos: อาร์เรย์ของข้อมูลเกี่ยวกับผู้ใช้ที่จับคู่ในทีม (teamIndex: หมายเลขทีม, playerInfos: อาร์เรย์ของข้อมูลเกี่ยวกับสมาชิกทีมในรูปแบบเดียวกับ timeoutPlayerInfos)
json
timeoutPlayerInfos อาร์เรย์ของข้อมูลเกี่ยวกับผู้ใช้แอปที่หมดเวลาโดยไม่มีการจับคู่
  • extraData: extraData ที่กรอกในระหว่างคำขอการจับคู่
  • point: คะแนนที่กรอกในระหว่างคำขอการจับคู่
  • playerId: user playerId ที่กรอกในระหว่างคำขอการจับคู่
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 หรือไม่มีค่าการตอบสนองอื่น: หากไม่มีการตอบสนองอย่างต่อเนื่อง ผลลัพธ์ที่ตรงกันจะไม่ถูกส่งมอบเป็นระยะเวลาหนึ่งจากมุมมองการจัดการระบบ