ส่งข้อความจาก Backend (Publish API)
Endpoint:POST /api/v1/publish
นี่คือหัวใจของระบบ RawPush ที่เปลี่ยนคำสั่ง HTTP POST จากโปรแกรมหลังบ้านของคุณ ให้กระจายเป็นข้อความไหลพรั่งพรูผ่านสายใย WebSocket แจกจ่ายหาหน้าจอคอมพิวเตอร์และมือถือของผู้ใช้งานนับหมื่นคนพร้อมໆ กัน
📌 โครงสร้างการส่งข้อมูล (Request Payload)
การส่งคำสั่งเข้าไป ควรเป็น JSON คล้ายๆ กับกระดาษโน้ต เพื่อบอกผู้รอดักฟัง:
json
{
"channel": "orders:status",
"event": "order.completed",
"data": {
"order_id": "8438",
"customer": "John",
"delivery_time": "14:30"
}
}channel(String, บังคับ): ห้องหรือชื่อช่องทาง ที่จะสั่งให้กระจายลงไป ใครที่กำลัง Subscribe ชื่อตรงกันเป๊ะ ๆ จะได้รับก้อนข้อมูลทั้งหมดนี้ (สูงสุด 100 ตัวอักษร)event(String, บังคับ): ชื่อ Event เพื่อให้ Client ฝั่ง Frontend แยกแยะและ handle ได้ถูกต้อง (สูงสุด 100 ตัวอักษร)data(Object/String, บังคับ): ก้อนเนื้อหาดิบที่คุณต้องการแบกส่งไป (เช่น ข้อมูลเซ็นเซอร์ สถานะ สินค้า ฯลฯ)
💻 ตัวอย่างโค้ดยิงเผยแพร่แบบง่ายๆ
นี่คือตัวอย่างการสั่ง Backend ของคุณ (ในหลากหลายภาษา) เพื่อยิงข้อมูลเข้า Server เรา
ตัวอย่าง: cURL (Terminal)
bash
curl -X POST https://api.rawpush.com/api/v1/publish \
-H "X-Api-Key: sk_my_secret_key" \
-H "Content-Type: application/json" \
-d '{
"channel": "global:announcement",
"event": "news.breaking",
"data": { "title": "ไฟไหม้โกดัง!", "level": "urgent" }
}'ตัวอย่าง: Node.js (Axios)
javascript
import axios from 'axios';
async function sendNotification() {
await axios.post('https://api.rawpush.com/api/v1/publish', {
channel: 'global:announcement',
event: 'news.breaking',
data: { title: 'ไฟไหม้โกดัง!', level: 'urgent' }
}, {
headers: { 'X-Api-Key': 'sk_my_secret_key' }
});
console.log("ส่ง Broadcast สำเร็จ");
}ตัวอย่าง: Python (requests)
python
import requests
url = "https://api.rawpush.com/api/v1/publish"
payload = {
"channel": "global:announcement",
"event": "news.breaking",
"data": {"title": "ไฟไหม้โกดัง!", "level": "urgent"}
}
headers = {
"X-Api-Key": "sk_my_secret_key",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print("ส่งแล้ว ได้รับสถานะ:", response.status_code)ตัวอย่าง: PHP (cURL)
php
<?php
$curl = curl_init();
$payload = json_encode([
"channel" => "global:announcement",
"event" => "news.breaking",
"data" => ["title" => "ไฟไหม้โกดัง!", "level" => "urgent"]
]);
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rawpush.com/api/v1/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
"X-Api-Key: sk_my_secret_key",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
?>📩 การตอบกลับ (Response)
เมื่อ RawPush รับข้อมูลและ broadcast สำเร็จ (โดยปกติใช้เวลาไม่ถึงวินาที) จะตอบกลับหา Server คุณว่า:
- HTTP
202 Accepted: ถือเป็นการตอบว่ารับข้อมูลเข้าระบบเรียบร้อยแล้วและได้ทำการ Broadcast แล้ว - HTTP
400 Bad Request: กรอกฟีลด์ JSON ขาดหาย ผิดรูปแบบ หรือพิมพ์ Channel ยาวล้นเกิดไป - HTTP
401 Unauthorized:X-Api-Keyไม่ถูกต้อง หรือถูก Revoke ไประหว่างทาง - HTTP
429 Too Many Requests: ยิงถี่ทะลวงระบบเกินกว่าโควต้า (Rate Limiting) ที่โปรเจกต์ตั้งเอาไว้
