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

WebSocket API

ภาพรวม

API WebSocket ให้บริการแชทโดยการสื่อสารกับเซิร์ฟเวอร์ Socket ผ่าน WebSocket มันรองรับการเชื่อมต่อของไคลเอนต์เกม การส่งข้อความช่อง และอื่นๆ

คุณสมบัติหลักของ WebSocket API มีดังนี้

  • การเชื่อมต่อ / ตัดการเชื่อมต่อของลูกค้า
  • PING / PONG
  • การส่ง / การรับข้อความแชท
    • แชทช่อง
    • แชท 1:1
  • การกรองผู้ใช้ที่ถูกบล็อก
    • ไม่ส่งข้อความไปยังผู้ใช้ที่ถูกบล็อก
    • ไม่รับข้อความจากผู้ใช้ที่ถูกบล็อก
  • การแจ้งเตือนการเข้าและออกจากช่อง

ข้อมูลพื้นฐาน

นี่ให้ข้อมูลพื้นฐานที่คุณต้องรู้เมื่อใช้ WebSocket API

คำสำคัญ

  • ช่อง: ห้องแชท
  • ข้อความช่อง: ข้อความแชทที่ส่งไปยังผู้ใช้ทั้งหมดในช่อง
  • ข้อความ 1:1: ข้อความแชทที่ส่งไปยังผู้ใช้เฉพาะ

ประเภทแพ็กเกจ

ประเภทของแพ็กเกจสำหรับการส่งและรับกับเซิร์ฟเวอร์ซ็อกเก็ตมีดังนี้

ชื่อแพ็กเกจ คำอธิบาย
เชื่อมต่อ เชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ต
การตอบสนองเชื่อมต่อ การตอบสนองต่อคำขอเชื่อมต่อ
เชื่อมต่อใหม่ เชื่อมต่อใหม่กับเซิร์ฟเวอร์ซ็อกเก็ต
การตอบสนองเชื่อมต่อใหม่ การตอบสนองต่อคำขอเชื่อมต่อใหม่
พิง รักษาการเชื่อมต่อให้มีชีวิต
หากมีการขอพิงในขณะที่การเชื่อมต่อยังไม่สำเร็จ เซิร์ฟเวอร์จะตัดการเชื่อมต่อ.
พอง การตอบสนองต่อคำขอพิง
แชทช่อง แชทช่อง
การตอบสนองแชทช่อง การตอบสนองต่อคำขอแชทช่อง
แชทโดยตรง แชท 1:1
การตอบสนองแชทโดยตรง การตอบสนองต่อคำขอแชทโดยตรง
แจ้งเตือนเข้าช่อง ข้อความเข้าช่อง
แจ้งเตือนออกจากช่อง ข้อความออกจากช่อง
แจ้งเตือนลบช่อง ข้อความลบช่อง
แจ้งเตือนช่อง ข้อความแจ้งเตือนช่อง
แจ้งเตือน ข้อความแจ้งเตือนผู้ใช้
แจ้งเตือนแชทช่อง ข้อความแชทช่อง
แจ้งเตือนแชทโดยตรง ข้อความแชท 1:1

กระบวนการเชื่อมต่อ Socket

  1. ขอการออกโทเค็นผ่านทาง API แชท Http จากเซิร์ฟเวอร์เกม ※ โทเค็นที่ออกจะใช้สำหรับการเชื่อมต่อกับเซิร์ฟเวอร์ Socket แชท

  2. แอปไคลเอนต์ขอเชื่อมต่อกับเซิร์ฟเวอร์ Socket

    • การสื่อสาร WebSocket
    • ใช้โทเค็นที่ออกในขั้นตอนที่ 1
    • หากการเชื่อมต่อสำเร็จ เซิร์ฟเวอร์ Socket จะส่งคืนข้อมูลด้านล่าง
    {
        "packetType":"RESPONSE_CONNECT",
        "status": 200,
        "message": "OK",
        "body":{
            "sessionId":"005056fffea3fd10-000400fd-00000797-f67881178d98d1cd-64ae9a76"
        }
    }
    

การตัดการเชื่อมต่อซ็อกเก็ต

เมื่อการเชื่อมต่อ WebSocket ถูกยกเลิก เซิร์ฟเวอร์จะดำเนินการตามขั้นตอนต่อไปนี้

  • ออกจากช่องที่เข้าร่วมและส่งข้อความแจ้งเตือนการออก
  • ลบข้อมูลการเชื่อมต่อ

โครงสร้างการสื่อสารผ่านซ็อกเก็ต

การสื่อสาร WebSocket จะถูกดำเนินการในรูปแบบ JSON รูปแบบแพ็กเก็ตคำขอมีดังนี้

{
        "packetType":"Packet type",
        "correlationId":"Identifier for matching the response to the request",
        "body": {
                // JSON data according to packetType
        }
}


รูปแบบแพ็กเกจการตอบกลับต่อไปนี้

{
        "packetType":"Packet type (starts with RESPONSE)",
        "correlationId":"Identifier for matching the response to the request",
        "status":"Status code",
        "message":"Status message",
        "body": // JSON Object
}


รูปแบบแพ็คเกจข้อความของเซิร์ฟเวอร์มีดังนี้

{
        "packetType":"Packet type (starts with NOTIFY)",
        "body":{
                // JSON data according to packetType
        }
}


กรณีต่อไปนี้จะมีผลเมื่อเซิร์ฟเวอร์ตัดการเชื่อมต่อ WebSocket

  • หากไม่มีการร้องขอจากฝั่งลูกค้าภายใน 1 นาที
  • หากไม่อยู่ในรูปแบบ JSON
  • เมื่อค่าคสถานะเป็น 401 หรือ 403
    • 401 ไม่ได้รับอนุญาต
    • 403 ห้ามเข้าถึง
  • หากเข้าถึงจากเซสชันอื่น ให้ยุติเซสชันที่มีอยู่

รหัสการตอบกลับ

นี่คือรหัสสถานะการตอบกลับ

รหัสสถานะ ข้อความสถานะ คำอธิบาย
200 สำเร็จ. สำเร็จ
400 คำขอไม่ถูกต้อง คำขอไม่ถูกต้อง
401 ไม่ได้รับอนุญาต ไม่ได้รับอนุญาต
403 ห้ามเข้าถึง ห้ามเข้าถึงโดยเซิร์ฟเวอร์
408 หมดเวลาคำขอ การเชื่อมต่อถูกปิดโดยเซิร์ฟเวอร์เนื่องจากไม่มีคำขอจากไคลเอนต์เป็นเวลา 60 วินาที
409 ขัดแย้ง คำขอของผู้ใช้ขัดแย้งกับสถานะของเซิร์ฟเวอร์ (เช่น เมื่อคู่สนทนา 1:1 ออฟไลน์)
500 ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน

ฟีเจอร์ Websocket API

นี่อธิบายคำขอและการตอบสนอง API สำหรับแต่ละฟังก์ชันของ WebSocket API ที่ใช้ในบริการแชท พร้อมกับโค้ดตัวอย่าง

การเชื่อมต่อของลูกค้า

พารามิเตอร์การร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType คำสั่งการเชื่อมต่อของลูกค้า (CONNECT) สตริง ใช่
body ข้อมูลคำขอ อ็อบเจ็กต์ ใช่
พารามิเตอร์การร้องขอ > เนื้อหา
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม integer Y e.g. 1
playerId ตัวระบุบัญชี
Hive รหัสผู้เล่น
long Y e.g. 1234
langCode Hive รหัสภาษา
(ตาม ISO 639 alpha-2, ภาษาอื่นที่ไม่แยกตาม ISO 639 alpha-2 จะแยกโดยแท็ก Script)
string Y e.g. "en"
loginKey โทเค็นที่ใช้สำหรับการเข้าถึง
ออกจาก Chat Http API
string Y "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY"

ร่างการตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType การตอบสนองต่อคำขอการเชื่อมต่อ (RESPONSE_CONNECT) สตริง ใช่
status รหัสสถานะ จำนวนเต็ม ใช่
message ข้อความสถานะ สตริง ใช่
body ข้อมูลที่ส่งกลับ อ็อบเจ็กต์ ใช่
เนื้อหาการตอบสนอง > เนื้อหา
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
sessionId ค่าที่ส่งกลับเมื่อเชื่อมต่อสำเร็จ string ใช่ เช่น "005056fffea3fd10-000400fd-00000797-f67881178d98d1cd-64ae9a76"

ตัวอย่างคำขอ

{
    "packetType": "CONNECT",
    "body":{
        "gameIndex":1,
        "playerId": 1234,
        "langCode": "en",
        "loginKey": "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY" // API 서버에서 생성한 JWT
    }
}

ตัวอย่างการตอบกลับ

{
    "packetType":"RESPONSE_CONNECT",
    "status": 200,
    "message":"OK",
    "body":{
        "sessionId":"005056fffea3fd10-000400fd-00000797-f67881178d98d1cd-64ae9a76"
    }
}

การเชื่อมต่อใหม่ของลูกค้า

ฟีเจอร์การเชื่อมต่อใหม่จะถูกจัดเตรียมไว้ เนื่องจากการเชื่อมต่อ WebSocket อาจถูกตัดการเชื่อมต่อขึ้นอยู่กับสถานการณ์เครือข่าย หากมีการส่งคำขอ RECONNECT ภายใน 10 นาทีหลังจากการตัดการเชื่อมต่อ WebSocket คุณจะเข้าร่วมช่องที่คุณเคยเข้าร่วมก่อนหน้านี้อีกครั้ง

พารามิเตอร์การร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType คำสั่งเชื่อมต่อใหม่ของลูกค้า (RECONNECT) string ใช่
body ข้อมูลคำขอ object ใช่
พารามิเตอร์คำขอ > เนื้อหา
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม จำนวนเต็ม Y เช่น 1
playerId รหัสบัญชี
Hive รหัสผู้เล่น
ยาว Y เช่น 1234
langCode Hive รหัสภาษา
(ตามมาตรฐาน ISO 639 alpha-2, ภาษาอื่นที่ไม่แยกตาม ISO 639 alpha-2 จะแยกโดยแท็ก Script)
สตริง Y เช่น "en"
loginKey โทเค็นที่ใช้สำหรับการเข้าถึง
ออกจาก Chat Http API
สตริง Y "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY"

เนื้อหาการตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType การตอบสนองต่อคำขอการเชื่อมต่อใหม่ (RESPONSE_RECONNECT) สตริง ใช่
status รหัสสถานะ จำนวนเต็ม ใช่
message ข้อความสถานะ สตริง ใช่
body ข้อมูลที่ส่งกลับ อ็อบเจ็กต์ ใช่
เนื้อหาการตอบกลับ > body
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
sessionId ค่าที่ส่งกลับเมื่อเชื่อมต่อสำเร็จ string ใช่ เช่น "005056fffea3fd10-000400fd-00000797-f67881178d98d1cd-64ae9a76"
channelIds รายการช่องที่เข้าร่วมสำเร็จจากช่องที่เข้าร่วมก่อนหน้านี้ string array ใช่ เช่น ["ch:1", "ch:2"]
failChannelIds รายการช่องที่ไม่สามารถเข้าร่วมจากช่องที่เข้าร่วมก่อนหน้านี้ string array ใช่ เช่น []

ตัวอย่างคำขอ

{
    "packetType": "RECONNECT",
    "body":{
        "gameIndex":1,
        "playerId": 1234,
        "langCode": "en",
        "loginKey": "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY" // JWT generated from the API server  
    }
}

ตัวอย่างการตอบกลับ

{
    "packetType":"RESPONSE_RECONNECT",
    "status": 200,
    "message":"OK",
    "body":{
        "sessionId":"005056fffea3fd10-000400fd-00000797-f67881178d98d1cd-64ae9a76",
        "channelIds":["ch:1", "ch:2"], // List of channels successfully joined from previously participated channels
        "failChannelIds":[]                // List of channels that failed to join from previously participated channels
    }
}

ปิ๊ง / ป๊อง

  • การร้องขอจะถูกต้องเมื่อเซิร์ฟเวอร์ซ็อกเก็ตและการเชื่อมต่อเสร็จสมบูรณ์เท่านั้น
  • ต้องเข้าสู่ระบบใหม่หากไม่มีการตอบกลับ PONG

พารามิเตอร์การร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType คำสั่งคำขอ PING (PING) string Y

เนื้อหาการตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType คำสั่งตอบกลับ PONG (PONG) string Y

ตัวอย่างคำขอ

{
    "packetType":"PING"   
}

ตัวอย่างการตอบกลับ

{
    "packetType": "PONG"   
}

การส่งข้อความช่อง

พารามิเตอร์การร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType คำสั่งการส่งข้อความช่อง (CHANNEL_CHAT) string Y
body ข้อมูลคำขอ object Y
พารามิเตอร์การร้องขอ > เนื้อหา
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex ดัชนีเกม Hive integer Y e.g. 1
from รหัสประจำตัวของบัญชีที่จะส่งข้อความไปยังช่อง
รหัสผู้เล่น Hive
long Y e.g. 1234
to รหัสช่องที่จะส่งข้อความไปยังช่อง
Chat Http API ที่สร้างขึ้น
string Y e.g. "open:1"
message ข้อความที่จะส่งไปยังช่อง
(สูงสุด 200 ตัวอักษร)
string Y e.g. "Hello World!"
extraData ข้อมูลเพิ่มเติมสำหรับข้อความ (UTF-8 based)
(สูงสุด 256 ไบต์)
string Y e.g. "bbbb"
langCode รหัสภาษาของข้อความที่ส่ง
รหัสภาษา Hive
(ตาม ISO 639 alpha-2, ภาษาใด ๆ ที่ไม่แยกแยะโดย ISO 639 alpha-2 ควรแยกด้วยแท็กสคริปต์)
string Y e.g. "en"

เนื้อหาการตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType การตอบสนองต่อการส่งข้อความช่อง (RESPONSE_CHANNEL_CHAT) สตริง ใช่
status รหัสสถานะ จำนวนเต็ม ใช่
message ข้อความสถานะ สตริง ใช่

ตัวอย่างคำขอ

{
    "packetType":"CHANNEL_CHAT",
    "body": {
        "gameIndex": 1,
        "from": 1234,
        "to": "open:1",
        "message": "Hello World!",
        "extraData": "bbbb",
        "langCode": "en"
    }
}

ตัวอย่างการตอบกลับ

{
    "packetType": "RESPONSE_CHANNEL_CHAT",
    "status": 200,
    "message":"OK"
}

การส่งข้อความ 1:1

พารามิเตอร์การร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType คำสั่งการส่งข้อความ 1:1 (DIRECT_CHAT) สตริง ใช่
body ข้อมูลคำขอ อ็อบเจ็กต์ ใช่
พารามิเตอร์การร้องขอ > เนื้อหา
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex ดัชนีเกม Hive จำนวนเต็ม ใช่ เช่น 1
from ตัวระบุบัญชีผู้ส่งข้อความ 1:1
Hive player ID
ยาว ใช่ เช่น 1234
to ตัวระบุบัญชีผู้รับข้อความ 1:1
Hive player ID
ยาว ใช่ เช่น 2222
message ข้อความที่จะส่ง 1:1
(สูงสุด 200 ตัวอักษร)
สตริง ใช่ เช่น "สวัสดีชาวโลก!"
extraData ข้อมูลเพิ่มเติมเกี่ยวกับข้อความ (UTF-8 based)
(สูงสุด 256 ไบต์)
สตริง ใช่ เช่น "bbbb"
langCode รหัสภาษาของข้อความที่ส่ง
Hive รหัสภาษา
(ตาม ISO 639 alpha-2, ภาษาอื่นๆ ที่ไม่แยกตาม ISO 639 alpha-2 ควรแยกด้วยแท็ก Script)
สตริง ใช่ เช่น "en"

เนื้อหาการตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType การตอบสนองต่อการส่งข้อความ 1:1 (RESPONSE_DIRECT_CHAT) สตริง ใช่
status รหัสสถานะ จำนวนเต็ม ใช่
message ข้อความสถานะ สตริง ใช่
เนื้อหาการตอบสนอง > เนื้อหา
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
status รหัสสถานะการตอบกลับ จำนวนเต็ม Y เช่น 200

ตัวอย่างคำขอ

{
  "packetType": "DIRECT_CHAT",
  "body": {
    "gameIndex": 1,
    "from": 2222,
    "to": 1234,
    "message": "안녕하세요",
    "extraData": "bbbb",
    "langCode": "ko"
  }
}

ตัวอย่างการตอบกลับ

{
    "packetType": "RESPONSE_DIRECT_CHAT",
    "status": 200,
    "message":"OK"
}

ข้อความเหตุการณ์เซิร์ฟเวอร์ซ็อกเก็ต

นี่อธิบายถึงข้อความที่ส่งจากเซิร์ฟเวอร์ไปยังไคลเอนต์เมื่อเกิดเหตุการณ์ขึ้น

ข้อความนี้เริ่มต้นด้วย packetType NOTIFY.

ข้อความเข้าช่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType ข้อความเข้าสู่ช่อง (NOTIFY_ENTER_CHANNEL) สตริง ใช่
body ข้อมูลคำขอ อ็อบเจ็กต์ ใช่

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม จำนวนเต็ม ใช่ เช่น 1
channelId รหัสช่องที่ป้อน สตริง ใช่ เช่น "open:10"
playerId ตัวระบุสำหรับบัญชีที่เข้าช่อง
Hive รหัสผู้เล่น
ยาว ใช่ เช่น 1234
timestamp วันที่และเวลาที่เข้าช่อง (ตาม UTC+0, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) สตริง ใช่ เช่น "2024-11-12T08:59:59.497Z"
timestampMillis วันที่และเวลาที่เข้าช่อง (Unix Timestamp Millisecond) ยาว ใช่ เช่น 1731401989

ตัวอย่าง

{
  "packetType": "NOTIFY_ENTER_CHANNEL",
  "body": {
    "gameIndex": 1,
    "channelId": "open:10",
    "playerId": 1234,
    "timestamp": "2024-11-12T08:59:59.497Z",
    "timestampMillis": 1731401989
  }
}

ข้อความออกจากช่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType ข้อความออกจากช่อง (NOTIFY_EXIT_CHANNEL) สตริง ใช่
body ข้อมูลคำขอ อ็อบเจ็กต์ ใช่

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม จำนวนเต็ม ใช่ เช่น 1
channelId ID ของช่องที่ออก สตริง ใช่ เช่น "open:10"
playerId ตัวระบุของบัญชีที่ออกจากช่อง
Hive player ID
ยาว ใช่ เช่น 2222
timestamp วันที่และเวลาที่ออกจากช่อง (UTC+0 มาตรฐาน, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) สตริง ใช่ เช่น "2024-11-12T08:59:59.497Z"
timestampMillis วันที่และเวลาที่ออกจากช่อง (UnixTimestamp มิลลิวินาที) ยาว ใช่ เช่น 1731401989

ตัวอย่าง

{
  "packetType": "NOTIFY_EXIT_CHANNEL",
  "body": {
    "gameIndex": 1,
    "channelId": "open:10",
    "playerId": 2222,
    "timestamp": "2024-11-12T09:29:35.872Z",
    "timestampMillis": 1731401989
  }
}

ข้อความการลบช่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType ข้อความการลบช่อง (NOTIFY_DELETE_CHANNEL) สตริง ใช่
body ข้อมูลคำขอ อ็อบเจ็กต์ ใช่

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม integer Y เช่น 1
channelId รหัสช่องที่ถูกลบ string Y เช่น "open:10"
timestamp วันที่และเวลาที่ช่องถูกลบ (ตาม UTC+0, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) string Y เช่น "2024-11-12T08:59:59.497Z"
timestampMillis วันที่และเวลาที่ช่องถูกลบ (UnixTimestamp Millisecond) long Y เช่น 1731401989

ตัวอย่าง

{
  "packetType": "NOTIFY_DELETE_CHANNEL",
  "body": {
    "gameIndex": 1,
    "channelId": "owner:1",
    "timestamp": "2024-11-13T05:06:29.198Z",
    "timestampMillis": 1731401989
  }
}

ข้อความแจ้งเตือนช่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType ข้อความการแจ้งเตือน (NOTIFY_CHANNEL_NOTICE) สตริง ใช่
body ข้อมูลการร้องขอ วัตถุ ใช่

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม จำนวนเต็ม Y เช่น 1
channelId รหัสช่องที่ได้รับข้อความการแจ้งเตือน สตริง Y เช่น "open:10"
from ตัวระบุของบัญชีที่ส่งข้อความการแจ้งเตือน สตริง Y เช่น SYSTEM
message เนื้อหาของข้อความการแจ้งเตือน สตริง Y เช่น "นี่คือข้อความการแจ้งเตือน."
timestamp วันที่และเวลาที่ส่งข้อความการแจ้งเตือน (ตาม UTC+0, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) สตริง Y เช่น "2024-11-13T05:06:29.198Z"
timestampMillis วันที่และเวลาที่ส่งข้อความการแจ้งเตือน (UnixTimestamp มิลลิวินาที) ยาว Y เช่น 1731401989

ตัวอย่าง

// Notify to specific channel
{
  "packetType": "NOTIFY_CHANNEL_NOTICE",
  "body": {
    "gameIndex": 1,
    "channelId": "open:10",
    "from": "SYSTEM",
    "message": "공지 메시지 입니다.",
    "timestamp": "2024-11-13T05:06:29.198Z",
    "timestampMillis": 1731401989
  }
}

ข้อความแจ้งเตือนผู้ใช้

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType ข้อความการแจ้งเตือนผู้ใช้ (NOTIFY_NOTICE) สตริง ใช่
body ข้อมูลการร้องขอ อ็อบเจ็กต์ ใช่

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม integer ใช่ เช่น 1
playerId รหัสผู้เล่นที่ได้รับข้อความแจ้งเตือน long ใช่ เช่น 123123
from ตัวระบุของบัญชีที่ส่งข้อความแจ้งเตือน string ใช่ เช่น SYSTEM
message เนื้อหาของข้อความแจ้งเตือน string ใช่ เช่น "นี่คือข้อความแจ้งเตือน."
timestamp วันที่และเวลาที่ส่งข้อความแจ้งเตือน (ตาม UTC+0, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) string ใช่ เช่น "2024-11-13T05:06:29.198Z"
timestampMillis วันที่และเวลาที่ส่งข้อความแจ้งเตือน (UnixTimestamp Millisecond) long ใช่ เช่น 1731401989

ตัวอย่าง

// Notice message for a specific user
{
  "packetType": "NOTIFY_NOTICE",
  "body": {
    "gameIndex": 1,
    "playerId": 123123,
    "from": "SYSTEM",
    "message": "공지 메시지 입니다.",
    "timestamp": "2024-11-13T05:06:29.198Z",
    "timestampMillis": 1731401989
  }
}

ข้อความช่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType ข้อความช่อง (NOTIFY_CHANNEL_CHAT) string Y
body ข้อมูลคำขอ object Y

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม integer Y e.g. 1
from ตัวระบุของบัญชีที่ส่งข้อความช่อง
Hive player ID
long Y e.g. 2222
to Channel ID ที่ส่งข้อความช่อง string Y e.g. "open:10"
message เนื้อหาของข้อความช่อง string Y e.g. "สวัสดี นี่คือการสนทนาช่อง."
extraData ข้อมูลเพิ่มเติมของข้อความ (UTF-8 based)
(สูงสุด 256 ไบต์)
string Y e.g. "bbbb"
timestamp วันที่และเวลาของข้อความช่องที่ส่ง (UTC+0 based, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) string Y e.g. "2024-11-13T05:12:18.385Z"
timestampMillis วันที่และเวลาของข้อความช่องที่ส่ง (UnixTimestamp มิลลิวินาที) long Y e.g. 1731401989

ตัวอย่าง

{
  "packetType": "NOTIFY_CHANNEL_CHAT",
  "body": {
    "gameIndex": 1,
    "from": 2222,
    "to": "open:10",
    "message": "Hello World!",
    "extraData": "bbbb",
    "timestamp": "2024-11-13T05:12:18.385Z",
    "timestampMillis": 1731401989
  }
}

1:1 ข้อความ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType ข้อความ 1:1 (NOTIFY_DIRECT_CHAT) สตริง ใช่
body ข้อมูลการร้องขอ อ็อบเจ็กต์ ใช่

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex ดัชนีเกม Hive integer ใช่ เช่น 1
from ตัวระบุบัญชีผู้ส่งข้อความ 1:1
Hive player ID
long ใช่ เช่น 1234
to ตัวระบุบัญชีผู้รับข้อความ 1:1
Hive player ID
long ใช่ เช่น 2222
message เนื้อหาข้อความ 1:1 string ใช่ เช่น "สวัสดี นี่คือการสนทนา 1:1."
extraData ข้อมูลเพิ่มเติมเกี่ยวกับข้อความ (UTF-8 based)
(สูงสุด 256 ไบต์)
string ใช่ เช่น "abcd"
timestamp วันที่และเวลาที่ส่งข้อความ 1:1 (UTC+0 based, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) string ใช่ เช่น "2024-11-13T05:12:50.060Z"
timestampMillis วันที่และเวลาที่ส่งข้อความ 1:1 (UnixTimestamp Millisecond) long ใช่ เช่น 1731401989

ตัวอย่าง

{
  "packetType": "NOTIFY_DIRECT_CHAT",
  "body": {
    "gameIndex": 1,
    "from": 1234,
    "to": 2222,
    "message": "안녕하세요. 1:1 채팅입니다.",
    "extraData": "abcd",
    "timestamp": "2024-11-13T05:12:50.060Z",
    "timestampMillis": 1731401989
  }
}