Skip to content

ส่งข้อความจาก 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) ที่โปรเจกต์ตั้งเอาไว้

Released under the MIT License.