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

WebSocket API

ภาพรวม

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

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

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

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

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

คำสำคัญ

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

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

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

ชื่อแพ็กเกจ คำอธิบาย
CONNECT เชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ต
RESPONSE_CONNECT การตอบสนองต่อคำขอ CONNECT
RECONNECT เชื่อมต่อใหม่กับเซิร์ฟเวอร์ซ็อกเก็ต
RESPONSE_RECONNECT การตอบสนองต่อคำขอ RECONNECT
PING รักษาการเชื่อมต่อให้มีชีวิต
หากมีการขอ PING ขณะที่ CONNECT ยังไม่สำเร็จ เซิร์ฟเวอร์จะตัดการเชื่อมต่อ
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_CHANNEL_CHAT ข้อความแชทช่อง
NOTIFY_DIRECT_CHAT ข้อความแชท 1:1
NOTIFY_DISCONNECT ข้อความการตัดการเชื่อมต่อ
เมื่อการเชื่อมต่อ WebSocket ไม่มีการใช้งาน และรูปแบบ Json ไม่ถูกต้อง จะตอบสนองด้วยประเภทแพ็กเกจนี้

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

  1. ขอการออกโทเค็นผ่านทาง chat Http API บนเซิร์ฟเวอร์เกม ※ โทเค็นที่ออกจะใช้สำหรับเชื่อมต่อกับเซิร์ฟเวอร์ 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
loginKey โทเค็นที่ใช้สำหรับการเข้าถึง
ออกจาก Chat Http API
สตริง ใช่ "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY"
extraData ข้อมูลเพิ่มเติมของผู้ใช้ (UTF-8 based)
(สูงสุด 256 ไบต์)
สตริง ไม่ เช่น "{\"nickname\":\"Test1234\",\"guildname\":\"together\"}"

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

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

ตัวอย่างการร้องขอ

{
    "packetType": "CONNECT",
    "body":{
        "gameIndex":1,
        "playerId": 1234,
        "loginKey": "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY", // JWT generated by the API server
        "extraData": "{\"nickname\":\"Test1234\",\"guildname\":\"together\"}" // Additional information
    }
}

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

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

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

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

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

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
packetType คำสั่งเชื่อมต่อใหม่ของลูกค้า (RECONNECT) สตริง ใช่
body ข้อมูลคำขอ ออบเจ็กต์ ใช่
พารามิเตอร์การร้องขอ > เนื้อหา
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม integer Y เช่น 1
playerId ตัวระบุบัญชี
Hive รหัสผู้เล่น
long Y เช่น 1234
loginKey โทเค็นที่ใช้สำหรับการเข้าถึง
Chat Http API ที่ออกให้
string Y "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY"
extraData ข้อมูลเพิ่มเติมของผู้ใช้ (UTF-8 based)
(สูงสุด 256 ไบต์)
string N เช่น "{\"nickname\":\"Test1234\",\"guildname\":\"together\"}"

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

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

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

{
    "packetType": "RECONNECT",
    "body":{
        "gameIndex":1,
        "playerId": 1234,
        "loginKey": "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY", // JWT generated by the API server
        "extraData": "{\"nickname\":\"Test1234\",\"guildname\":\"together\"}" // Additional information
    }
}

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

{
    "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) สตริง ใช่
body ข้อมูลการร้องขอ วัตถุ ใช่
พารามิเตอร์คำขอ > ร่าง
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
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!"
langCode Hive รหัสภาษา
(ตาม ISO 639 alpha-2, ภาษาใด ๆ ที่ไม่แยกแยะโดย ISO 639 alpha-2 ควรแยกแยะด้วยแท็ก Script)
string Y e.g. "en"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

เนื้อหา

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

ตัวอย่าง

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

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

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

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม integer Y เช่น 1
channelId รหัสช่องที่ออก string Y เช่น "open:10"
playerId รหัสประจำตัวของบัญชีที่ออกจากช่อง
Hive รหัสผู้เล่น
long Y เช่น 2222
extraData ข้อมูลเพิ่มเติมของผู้ใช้ (UTF-8 based)
(สูงสุด 256 ไบต์)
string Y เช่น "abcd"
timestamp วันที่และเวลาที่ออกจากช่อง (UTC+0 based, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ) string Y เช่น "2024-11-12T08:59:59.497Z"

ตัวอย่าง

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

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

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

เนื้อหา

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

ตัวอย่าง

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

ข้อความประกาศช่อง

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

เนื้อหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น ตัวอย่าง
gameIndex Hive ดัชนีเกม จำนวนเต็ม Y เช่น 1
channelId รหัสช่องที่ได้รับข้อความการแจ้งเตือน สตริง N เช่น "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"

ตัวอย่าง

// Announce to specific channel
{
  "packetType": "NOTIFY_CHANNEL_NOTICE",
  "body": {
    "gameIndex": 1,
    "channelId": "open:10",
    "from": "SYSTEM",
    "message": "This is an announcement message.",
    "timestamp": "2024-11-13T05:06:29.198Z"
  }
}

ข้อความช่อง

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

เนื้อหา

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

ตัวอย่าง

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

1:1 ข้อความ

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

เนื้อหา

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

ตัวอย่าง

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