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 ไม่ถูกต้อง จะตอบสนองด้วยประเภทแพ็กเกจนี้ | 
กระบวนการเชื่อมต่อซ็อกเก็ต¶
-  ขอการออกโทเค็นผ่านทาง chat Http API บนเซิร์ฟเวอร์เกม ※ โทเค็นที่ออกจะใช้สำหรับเชื่อมต่อกับเซิร์ฟเวอร์ Socket แชท - ขอ User Token Issuance API โดยใช้ Hive Certification Key
 
-  คำขอเชื่อมต่อไปยังเซิร์ฟเวอร์ Socket จากไคลเอนต์เกม - การสื่อสาร WebSocket
- ใช้โทเค็นที่ออกในขั้นตอนที่ 1
- หากการเชื่อมต่อสำเร็จ เซิร์ฟเวอร์ Socket จะส่งคืนข้อมูลด้านล่าง
 
การตัดการเชื่อมต่อของซ็อกเก็ต¶
เมื่อการเชื่อมต่อ 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-8based)(สูงสุด 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-8based)(สูงสุด 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 | คำสั่งการส่งข้อความช่อง ( 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"
    }
}
ตัวอย่างการตอบกลับ¶
การส่งข้อความ 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 เป็น 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-8based)(สูงสุด 256 ไบต์) | string | Y | เช่น "abcd" | 
| timestamp | วันที่และเวลาที่ออกจากช่อง ( UTC+0based, รูปแบบ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-8based)(สูงสุด 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+0based, รูปแบบ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-8based)(สูงสุด 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+0based, รูปแบบyyyy-MM-dd'T'HH:mm:ss.SSSZ) | string | Y | เช่น "2024-11-13T05:12:50.060Z" |