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

WebSocket API

ภาพรวม

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

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

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

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

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

คำสำคัญ

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

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

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

ชื่อแพ็กเกจ คำอธิบาย
CONNECT เชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ต
RESPONSE_CONNECT การตอบกลับคำขอ CONNECT
RECONNECT เชื่อมต่อใหม่กับเซิร์ฟเวอร์ซ็อกเก็ต
RESPONSE_RECONNECT การตอบกลับคำขอ RECONNECT
PING รักษาการเชื่อมต่อให้มีชีวิต
หากมีการขอ PING ขณะที่การเชื่อมต่อยังไม่สำเร็จ เซิร์ฟเวอร์จะตัดการเชื่อมต่อ
PONG การตอบกลับคำขอ PING
CHANNEL_CHAT แชทช่อง
RESPONSE_CHANNEL_CHAT การตอบกลับคำขอ CHANNEL_CHAT
DIRECT_CHAT แชท 1:1
RESPONSE_DIRECT_CHAT การตอบกลับคำขอ DIRECT_CHAT
NOTIFY_ENTER_CHANNEL ข้อความการเข้าช่อง
NOTIFY_EXIT_CHANNEL ข้อความการออกจากช่อง
NOTIFY_DELETE_CHANNEL ข้อความการลบช่อง
NOTIFY_CHANNEL_NOTICE ข้อความประกาศช่อง
NOTIFY_NOTICE ข้อความประกาศผู้ใช้
NOTIFY_CHANNEL_CHAT ข้อความแชทช่อง
NOTIFY_DIRECT_CHAT ข้อความแชท 1:1

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

  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 จำนวนเต็ม ใช่ เช่น 1
playerId ตัวระบุบัญชี
รหัสผู้เล่น Hive
ยาว ใช่ เช่น 1234
langCode รหัสภาษา Hive
(ตาม ISO 639 alpha-2, ภาษาอื่นที่ไม่แยกตาม ISO 639 alpha-2 จะแยกโดยแท็ก Script)
สตริง ใช่ เช่น "en"
loginKey โทเค็นที่ใช้สำหรับการเข้าถึง
ออกจาก Chat Http API
สตริง ใช่ "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY"

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

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType การตอบสนองต่อคำขอการเชื่อมต่อ (RESPONSE_CONNECT) สตริง ใช่
status รหัสสถานะ จำนวนเต็ม ใช่
message ข้อความสถานะ สตริง ใช่
body ข้อมูลที่ส่งกลับ อ็อบเจ็กต์ ใช่
เนื้อหาการตอบกลับ > body
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
sessionId ค่าที่ส่งกลับเมื่อเชื่อมต่อสำเร็จ สตริง ใช่ เช่น "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) สตริง ใช่
body ข้อมูลคำขอ อ็อบเจ็กต์ ใช่
พารามิเตอร์คำขอ > ร่าง
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
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) string ใช่
status รหัสสถานะ integer ใช่
message ข้อความสถานะ string ใช่
body ข้อมูลที่ส่งกลับ object ใช่
เนื้อหาการตอบกลับ > 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) สตริง Y

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

{
    "packetType":"PING"   
}

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

{
    "packetType": "PONG"   
}

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

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

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

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

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType การตอบสนองต่อการส่งข้อความ 1:1 (RESPONSE_DIRECT_CHAT) สตริง ใช่
status รหัสสถานะ จำนวนเต็ม ใช่
message ข้อความสถานะ สตริง ใช่
เนื้อหาการตอบกลับ > body
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
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 ดัชนีเกม integer ใช่ เช่น 1
channelId ID ของช่องที่ออก string ใช่ เช่น "open:10"
playerId ตัวระบุของบัญชีที่ออกจากช่อง
Hive ID ผู้เล่น
long ใช่ เช่น 2222
timestamp วันที่และเวลาที่ออกจากช่อง (มาตรฐาน UTC+0 รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) string ใช่ เช่น "2024-11-12T08:59:59.497Z"
timestampMillis วันที่และเวลาที่ออกจากช่อง (UnixTimestamp Millisecond) long ใช่ เช่น 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 ) string ใช่
body ข้อมูลคำขอ object ใช่

ร่างกาย

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

ตัวอย่าง

// 특정 채널에 공지
{
  "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 ดัชนีเกม จำนวนเต็ม ใช่ เช่น 1
playerId รหัสผู้เล่นที่ได้รับข้อความแจ้งเตือน ยาว ใช่ เช่น 123123
from ตัวระบุของบัญชีที่ส่งข้อความแจ้งเตือน สตริง ใช่ เช่น SYSTEM
message เนื้อหาของข้อความแจ้งเตือน สตริง ใช่ เช่น "นี่คือข้อความแจ้งเตือน"
timestamp วันที่และเวลาที่ส่งข้อความแจ้งเตือน (ตาม UTC+0, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) สตริง ใช่ เช่น "2024-11-13T05:06:29.198Z"
timestampMillis วันที่และเวลาที่ส่งข้อความแจ้งเตือน (UnixTimestamp มิลลิวินาที) ยาว ใช่ เช่น 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) สตริง ใช่
body ข้อมูลคำขอ วัตถุ ใช่

เนื้อหา

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

เนื้อหา

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