WebSocket API
ภาพรวม¶
API WebSocket ให้บริการแชทโดยการสื่อสารกับเซิร์ฟเวอร์ Socket ผ่าน WebSocket มันรองรับการเชื่อมต่อของไคลเอนต์เกม การส่งข้อความช่อง และอื่นๆ
คุณสมบัติหลักของ WebSocket API มีดังนี้
- การเชื่อมต่อ / ตัดการเชื่อมต่อของลูกค้า
- PING / PONG
- การส่ง / การรับข้อความแชท
- แชทช่อง
- แชท 1:1
- การกรองผู้ใช้ที่ถูกบล็อก
- ไม่ส่งข้อความไปยังผู้ใช้ที่ถูกบล็อก
- ไม่รับข้อความจากผู้ใช้ที่ถูกบล็อก
- การแจ้งเตือนการเข้าและออกจากช่อง
ข้อมูลพื้นฐาน¶
นี่ให้ข้อมูลพื้นฐานที่คุณต้องรู้เมื่อใช้ WebSocket API
คำสำคัญ¶
- ช่อง: ห้องแชท
- ข้อความช่อง: ข้อความแชทที่ส่งไปยังผู้ใช้ทั้งหมดในช่อง
- ข้อความ 1:1: ข้อความแชทที่ส่งไปยังผู้ใช้เฉพาะ
ประเภทแพ็กเกจ¶
ประเภทของแพ็กเกจสำหรับการส่งและรับกับเซิร์ฟเวอร์ซ็อกเก็ตมีดังนี้
ชื่อแพ็กเกจ | คำอธิบาย |
---|---|
เชื่อมต่อ | เชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ต |
การตอบสนองเชื่อมต่อ | การตอบสนองต่อคำขอเชื่อมต่อ |
เชื่อมต่อใหม่ | เชื่อมต่อใหม่กับเซิร์ฟเวอร์ซ็อกเก็ต |
การตอบสนองเชื่อมต่อใหม่ | การตอบสนองต่อคำขอเชื่อมต่อใหม่ |
พิง | รักษาการเชื่อมต่อให้มีชีวิต หากมีการขอพิงในขณะที่การเชื่อมต่อยังไม่สำเร็จ เซิร์ฟเวอร์จะตัดการเชื่อมต่อ. |
พอง | การตอบสนองต่อคำขอพิง |
แชทช่อง | แชทช่อง |
การตอบสนองแชทช่อง | การตอบสนองต่อคำขอแชทช่อง |
แชทโดยตรง | แชท 1:1 |
การตอบสนองแชทโดยตรง | การตอบสนองต่อคำขอแชทโดยตรง |
แจ้งเตือนเข้าช่อง | ข้อความเข้าช่อง |
แจ้งเตือนออกจากช่อง | ข้อความออกจากช่อง |
แจ้งเตือนลบช่อง | ข้อความลบช่อง |
แจ้งเตือนช่อง | ข้อความแจ้งเตือนช่อง |
แจ้งเตือน | ข้อความแจ้งเตือนผู้ใช้ |
แจ้งเตือนแชทช่อง | ข้อความแชทช่อง |
แจ้งเตือนแชทโดยตรง | ข้อความแชท 1:1 |
กระบวนการเชื่อมต่อ Socket¶
-
ขอการออกโทเค็นผ่านทาง API แชท Http จากเซิร์ฟเวอร์เกม ※ โทเค็นที่ออกจะใช้สำหรับการเชื่อมต่อกับเซิร์ฟเวอร์ Socket แชท
- ขอ 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 ดัชนีเกม | 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 | คำสั่งการส่งข้อความช่อง (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"
}
}
ตัวอย่างการตอบกลับ¶
การส่งข้อความ 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 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 |