Websocket api
ภาพรวม¶
WebSocket API ให้บริการแชทโดยการสื่อสารกับเซิร์ฟเวอร์ซ็อกเก็ตผ่าน WebSocket มันรองรับการเชื่อมต่อของไคลเอนต์เกม การส่งข้อความช่อง และอื่นๆ
คุณสมบัติหลักของ WebSocket API มีดังนี้:
- การเชื่อมต่อ / ตัดการเชื่อมต่อของลูกค้า
- PING / PONG
- ส่ง / รับข้อความแชท
- แชทช่อง
- แชท 1:1
- การกรองผู้ใช้ที่ถูกบล็อก
- ไม่ส่งข้อความไปยังผู้ใช้ที่ถูกบล็อก
- ไม่รับข้อความจากผู้ใช้ที่ถูกบล็อก
- การแจ้งเตือนการเข้าและออกจากช่อง
ข้อมูลพื้นฐาน¶
ส่วนนี้ให้ข้อมูลพื้นฐานที่คุณจำเป็นต้องรู้เมื่อใช้ WebSocket API
คำสำคัญ¶
- ช่อง: ห้องแชท
- ข้อความช่อง: ข้อความแชทที่ส่งไปยังผู้ใช้ทั้งหมดในช่องที่เข้าร่วม
- ข้อความ 1:1: ข้อความแชทที่ส่งไปยังผู้ใช้เฉพาะ
ประเภทแพ็กเก็ต¶
ประเภทแพ็กเกจต่อไปนี้จะถูกส่งและรับกับเซิร์ฟเวอร์ซ็อกเก็ต
ชื่อแพ็กเกจ | คำอธิบาย |
---|---|
เชื่อมต่อ | เชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ต |
การตอบสนองเชื่อมต่อ | การตอบสนองต่อคำขอเชื่อมต่อ |
เชื่อมต่อใหม่ | เชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ตอีกครั้ง |
การตอบสนองเชื่อมต่อใหม่ | การตอบสนองต่อคำขอเชื่อมต่อใหม่ |
PING | รักษาการเชื่อมต่อ หาก PING ถูกส่งก่อนที่การเชื่อมต่อจะสำเร็จ เซิร์ฟเวอร์จะตัดการเชื่อมต่อ |
PONG | การตอบสนองต่อคำขอ PING |
ช่องแชท | ช่องแชท |
การตอบสนองช่องแชท | การตอบสนองต่อคำขอช่องแชท |
แชทโดยตรง | แชท 1:1 |
การตอบสนองแชทโดยตรง | การตอบสนองต่อคำขอแชทโดยตรง |
ข้อความแจ้งเตือนการเข้าใช้ช่อง | ข้อความแจ้งเตือนการเข้าใช้ช่อง |
ข้อความแจ้งเตือนการออกจากช่อง | ข้อความแจ้งเตือนการออกจากช่อง |
ข้อความแจ้งเตือนการลบช่อง | ข้อความแจ้งเตือนการลบช่อง |
ข้อความแจ้งเตือนช่อง | ข้อความแจ้งเตือนช่อง |
ข้อความแจ้งเตือนผู้ใช้ | ข้อความแจ้งเตือนผู้ใช้ |
ข้อความแชทช่อง | ข้อความแชทช่อง |
ข้อความแชทโดยตรง | ข้อความแชท 1:1 |
กระบวนการเชื่อมต่อ Socket¶
-
เซิร์ฟเวอร์เกมขอการออกโทเค็นจาก API แชท Http. ※ โทเค็นที่ออกจะถูกใช้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ Socket แชท
- ขอ API การออกโทเค็นผู้ใช้ โดยใช้ Hive Certification Key
-
แอพพลิเคชันลูกค้าขอเชื่อมต่อกับเซิร์ฟเวอร์ Socket
- การสื่อสาร WebSocket
- ใช้โทเค็นที่ออกในขั้นตอนที่ 1
- เมื่อเชื่อมต่อสำเร็จ เซิร์ฟเวอร์ Socket จะส่งคืนข้อมูลด้านล่าง
การตัดการเชื่อมต่อซ็อกเก็ต¶
เมื่อการเชื่อมต่อ WebSocket ถูกยกเลิก เซิร์ฟเวอร์จะดำเนินการตามขั้นตอนต่อไปนี้:
- ออกจากช่องที่คุณเข้าร่วมและส่งข้อความแจ้งการออก
- ลบข้อมูลการเชื่อมต่อ
โครงสร้างการสื่อสารด้วยซ็อกเก็ต¶
การสื่อสาร WebSocket จะดำเนินการในรูปแบบ JSON รูปแบบแพ็กเก็ตคำขอมีดังนี้:
{
"packetType":"Packet type",
"correlationId":"Identifier matching the response to the request",
"body": {
//JSON data according to packetType
}
}
รูปแบบแพ็กเกจการตอบกลับมีดังนี้
{
"packetType":"Packet type (starts with RESPONSE)",
"correlationId":"Identifier matching the response to the request",
"status":"Status code",
"message":"Status message",
"body": // JSON Object
}
รูปแบบแพ็คเกจข้อความเซิร์ฟเวอร์ต่อไปนี้
เซิร์ฟเวอร์อาจยุติการเชื่อมต่อ 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 | เช่น 1 |
playerId | ตัวระบุบัญชี รหัสผู้เล่น | long | Y | เช่น 1234 |
langCode | Hive รหัสภาษา (อิงจาก ISO 639 alpha-2, ภาษาใด ๆ ที่ไม่แยกแยะโดย ISO 639 alpha-2 จะแยกโดยแท็ก Script) | string | Y | เช่น "en" |
loginKey | โทเค็นที่ใช้สำหรับการเชื่อมต่อ ออกโดย Chat Http API | string | Y | "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY" |
เนื้อหาการตอบกลับ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | การตอบสนองต่อคำขอการเชื่อมต่อ (RESPONSE_CONNECT ) | สตริง | ใช่ |
status | รหัสสถานะ | จำนวนเต็ม | ใช่ |
message | ข้อความสถานะ | สตริง | ใช่ |
body | ข้อมูลที่ส่งกลับ | อ็อบเจ็กต์ | ใช่ |
เนื้อหาการตอบกลับ > body¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | ตัวอย่าง |
---|---|---|---|---|
sessionId | ค่าที่ส่งกลับเมื่อเชื่อมต่อสำเร็จ | string | Y | เช่น "005056fffea3fd10-000400fd-00000797-f67881178d98d1cd-64ae9a76" |
ตัวอย่างคำขอ¶
{
"packetType": "CONNECT",
"body":{
"gameIndex":1,
"playerId": 1234,
"langCode": "en",
"loginKey": "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY" // JWT created by the API server
}
}
ตัวอย่างการตอบกลับ¶
{
"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 ดัชนีเกม | integer | Y | เช่น 1 |
playerId | ตัวระบุบัญชี รหัสผู้เล่น | long | Y | เช่น 1234 |
langCode | Hive รหัสภาษา (ตาม ISO 639 alpha-2, ภาษาอื่นที่ไม่แยกตาม ISO 639 alpha-2 จะแยกโดยแท็ก Script) | string | Y | เช่น "en" |
loginKey | โทเค็นที่ใช้สำหรับการเชื่อมต่อ ออกโดย Chat Http API | string | Y | "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY" |
เนื้อหาการตอบกลับ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | การตอบสนองต่อคำขอการเชื่อมต่อใหม่ (RESPONSE_RECONNECT ) | สตริง | ใช่ |
status | รหัสสถานะ | จำนวนเต็ม | ใช่ |
message | ข้อความสถานะ | สตริง | ใช่ |
body | ข้อมูลที่ส่งกลับ | อ็อบเจ็กต์ | ใช่ |
เนื้อหาการตอบกลับ > เนื้อหา¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | ตัวอย่าง |
---|---|---|---|---|
sessionId | ค่าที่ส่งกลับเมื่อเชื่อมต่อสำเร็จ | string | Y | เช่น "005056fffea3fd10-000400fd-00000797-f67881178d98d1cd-64ae9a76" |
channelIds | รายการช่องที่เข้าร่วมใหม่ได้สำเร็จจากช่องที่เข้าร่วมก่อนหน้านี้ | string array | Y | เช่น ["ch:1", "ch:2"] |
failChannelIds | รายการช่องที่ไม่สามารถเข้าร่วมใหม่ได้จากช่องที่เข้าร่วมก่อนหน้านี้ | string array | Y | เช่น [] |
ตัวอย่างคำขอ¶
{
"packetType": "RECONNECT",
"body":{
"gameIndex":1,
"playerId": 1234,
"langCode": "en",
"loginKey": "eyJhbGciOiJIUzI1NiJ9.eyJnYW1lSW5kZXgiOjEsInBsYXllcklkIjoxMjM0LCJpYXQiOjE3MzAzNjY4MjksImV4cCI6MTczMDM3MDQyOX0.fpg6kqwqp1QN3KuYcjVBr8j0mzjN2doefJ_D6xFxcFY" // JWT created by 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 that were successfully rejoined
"failChannelIds":[] // List of channels that failed to rejoin
}
}
พิง / ปอง¶
- คำขอจะถูกต้องเมื่อเซิร์ฟเวอร์ Socket และการเชื่อมต่อ (CONNECT) เสร็จสมบูรณ์แล้ว
- หากไม่มีการตอบกลับ PONG จะต้องเข้าสู่ระบบใหม่
พารามิเตอร์การร้องขอ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | คำสั่งคำขอ PING (PING ) | สตริง | Y |
เนื้อหาการตอบกลับ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | คำสั่งตอบกลับ PONG (PONG ) | string | Y |
ตัวอย่างคำขอ¶
ตัวอย่างการตอบกลับ¶
ส่งข้อความช่อง¶
พารามิเตอร์การร้องขอ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | คำสั่งส่งข้อความช่อง (CHANNEL_CHAT ) | สตริง | ใช่ |
body | ข้อมูลคำขอ | อ็อบเจ็กต์ | ใช่ |
พารามิเตอร์การร้องขอ > เนื้อหา¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | ตัวอย่าง |
---|---|---|---|---|
gameIndex | Hive ดัชนีเกม | integer | Y | เช่น 1 |
from | รหัสบัญชีที่ส่งข้อความไปยังช่อง รหัสผู้เล่น | long | Y | เช่น 1234 |
to | รหัสช่องเพื่อส่งข้อความไปยังช่อง Chat Http APIที่สร้างขึ้น | string | Y | เช่น "open:1" |
message | ข้อความที่จะส่งไปยังช่อง (สูงสุด 200 ตัวอักษร) | string | Y | เช่น "Hello World!" |
extraData | ข้อมูลข้อความเพิ่มเติม (ตาม UTF-8 )(สูงสุด 256 ไบต์) | string | Y | เช่น "bbbb" |
langCode | รหัสภาษาของข้อความที่ส่ง Hive รหัสภาษา (ตาม ISO 639 alpha-2, ภาษาใด ๆ ที่ไม่แยกตาม ISO 639 alpha-2 จะถูกแยกโดยแท็กสคริปต์) | string | Y | เช่น "en" |
เนื้อหาการตอบกลับ¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | การตอบกลับต่อการส่งข้อความช่อง (RESPONSE_CHANNEL_CHAT ) | string | ใช่ |
status | รหัสสถานะ | integer | ใช่ |
message | ข้อความสถานะ | string | ใช่ |
ตัวอย่างการร้องขอ¶
{
"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 ดัชนีเกม | integer | Y | เช่น 1 |
from | รหัสบัญชีที่ส่งข้อความ 1:1 รหัสผู้เล่น | long | Y | เช่น 1234 |
to | รหัสบัญชีที่รับข้อความ 1:1 รหัสผู้เล่น | long | Y | เช่น 2222 |
message | ข้อความที่จะส่ง 1:1 (สูงสุด 200 ตัวอักษร) | string | Y | เช่น "สวัสดีชาวโลก!" |
extraData | ข้อมูลเพิ่มเติมเกี่ยวกับข้อความ (ตาม UTF-8 )(สูงสุด 256 ไบต์) | string | Y | เช่น "bbbb" |
langCode | รหัสภาษาของข้อความที่ส่ง Hive รหัสภาษา (ตาม ISO 639 alpha-2, ภาษาใด ๆ ที่ไม่แยกตาม ISO 639 alpha-2 จะแยกโดยแท็ก Script) | string | Y | เช่น "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"
}
}
ตัวอย่างการตอบกลับ¶
ข้อความเหตุการณ์เซิร์ฟเวอร์ซ็อกเก็ต¶
ส่วนนี้อธิบายข้อความที่ส่งจากเซิร์ฟเวอร์ไปยังไคลเอนต์เมื่อเกิดเหตุการณ์ขึ้น
ข้อความเหล่านี้เริ่มต้นด้วย NOTIFY
ใน packetType.
ข้อความเข้าช่อง¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | ข้อความการเข้าช่อง (NOTIFY_ENTER_CHANNEL ) | สตริง | ใช่ |
body | ข้อมูลคำขอ | อ็อบเจ็กต์ | ใช่ |
เนื้อหา¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | ตัวอย่าง |
---|---|---|---|---|
gameIndex | Hive ดัชนีเกม | integer | Y | เช่น 1 |
channelId | รหัสช่องของรายการ | string | Y | เช่น "open:10" |
playerId | รหัสบัญชีที่เข้าช่อง รหัสผู้เล่น | long | Y | เช่น 1234 |
timestamp | เวลาที่เข้าช่อง (UTC+0 มาตรฐาน, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | string | Y | เช่น "2024-11-12T08:59:59.497Z" |
timestampMillis | เวลาที่เข้าช่อง (UnixTimestamp มิลลิวินาที) | long | Y | เช่น 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 | Y | เช่น 1 |
channelId | รหัสช่องของการออก | string | Y | เช่น "open:10" |
playerId | รหัสบัญชีที่ออกจากช่อง รหัสผู้เล่น | long | Y | เช่น 2222 |
timestamp | เวลาที่ออกจากช่อง (UTC+0 มาตรฐาน, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | string | Y | เช่น "2024-11-12T08:59:59.497Z" |
timestampMillis | เวลาที่ออกจากช่อง (UnixTimestamp มิลลิวินาที) | long | Y | เช่น 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 ดัชนีเกม | จำนวนเต็ม | Y | เช่น 1 |
channelId | รหัสช่องของช่องที่ถูกลบ | สตริง | Y | เช่น "open:10" |
timestamp | เวลาที่ลบช่อง (UTC+0 มาตรฐาน, รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | สตริง | Y | เช่น "2024-11-12T08:59:59.497Z" |
timestampMillis | เวลาที่ลบช่อง (UnixTimestamp มิลลิวินาที) | ยาว | 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 |
ตัวอย่าง¶
// Notice to a specific channel
{
"packetType": "NOTIFY_CHANNEL_NOTICE",
"body": {
"gameIndex": 1,
"channelId": "open:10",
"from": "SYSTEM",
"message": "This is a notice message.",
"timestamp": "2024-11-13T05:06:29.198Z",
"timestampMillis": 1731401989
}
}
ข้อความแจ้งเตือนผู้ใช้¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | ข้อความแจ้งเตือนผู้ใช้ (NOTIFY_NOTICE ) | สตริง | ใช่ |
body | ข้อมูลการร้องขอ | อ็อบเจ็กต์ | ใช่ |
เนื้อหา¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | ตัวอย่าง |
---|---|---|---|---|
gameIndex | Hive ดัชนีเกม | integer | Y | เช่น 1 |
playerId | รหัสผู้เล่นที่ได้รับข้อความแจ้งเตือน | long | Y | เช่น 123123 |
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 มิลลิวินาที) | long | Y | เช่น 1731401989 |
ตัวอย่าง¶
// Notice to a specific user
{
"packetType": "NOTIFY_NOTICE",
"body": {
"gameIndex": 1,
"playerId": 123123,
"from": "SYSTEM",
"message": "This is a notice message.",
"timestamp": "2024-11-13T05:06:29.198Z",
"timestampMillis": 1731401989
}
}
ข้อความช่อง¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
---|---|---|---|
packetType | ข้อความช่อง (NOTIFY_CHANNEL_CHAT ) | สตริง | ใช่ |
body | ข้อมูลคำขอ | อ็อบเจ็กต์ | ใช่ |
เนื้อหา¶
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | ตัวอย่าง |
---|---|---|---|---|
gameIndex | Hive ดัชนีเกม | integer | Y | เช่น 1 |
from | รหัสบัญชีที่ส่งข้อความช่อง รหัสผู้เล่น | long | Y | เช่น 2222 |
to | รหัสช่องที่ได้รับข้อความช่อง | string | Y | เช่น "open:10" |
message | เนื้อหาของข้อความช่อง | string | Y | เช่น "สวัสดี นี่คือการสนทนาช่อง." |
extraData | ข้อมูลเพิ่มเติมเกี่ยวกับข้อความ (ตาม UTF-8 )(สูงสุด 256 ไบต์) | string | Y | เช่น "bbbb" |
timestamp | เวลาที่ส่งข้อความช่อง (มาตรฐาน UTC+0 , รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | string | Y | เช่น "2024-11-13T05:12:18.385Z" |
timestampMillis | เวลาที่ส่งข้อความช่อง (UnixTimestamp มิลลิวินาที) | long | Y | เช่น 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 | Y | เช่น 1 |
from | รหัสบัญชีที่ได้รับข้อความ 1:1 รหัสผู้เล่น | long | Y | เช่น 1234 |
to | รหัสบัญชีที่ส่งข้อความ 1:1 รหัสผู้เล่น | long | Y | เช่น 2222 |
message | เนื้อหาของข้อความ 1:1 | string | Y | เช่น "สวัสดี นี่คือการแชท 1:1." |
extraData | ข้อมูลเพิ่มเติมเกี่ยวกับข้อความ (ตาม UTF-8 )(สูงสุด 256 ไบต์) | string | Y | เช่น "abcd" |
timestamp | เวลาที่ส่งข้อความ 1:1 (มาตรฐาน UTC+0 , รูปแบบ yyyy-MM-dd'T'HH:mm:ss.SSSZ ) | string | Y | เช่น "2024-11-13T05:12:50.060Z" |
timestampMillis | เวลาที่ส่งข้อความ 1:1 (UnixTimestamp มิลลิวินาที) | long | Y | เช่น 1731401989 |