Skip to content

เริ่มต้นใช้งานด่วน (Quick Start)

คู่มือนี้จะพานักพัฒนาเริ่มต้นสร้างและเชื่อมต่อระบบ Real-time กับ RawPush ให้สำเร็จภายใน 5 นาที โดยเราจะทดลองรับส่งข้อความง่ายๆ กัน


ขั้นตอนที่ 1: สร้าง Project และเอา API Keys

  1. เข้าสู่ระบบ RawPush Dashboard
  2. กดปุ่ม "Create Project"
  3. ตั้งชื่อโปรเจกต์ เช่น MyProject-Dev หรือ IoT-Monitoring
  4. เมื่อสร้างเสร็จ คุณจะได้กุญแจสำคัญ 2 ดอก (โปรดเก็บไว้ความลับ):
    • Public Key (pk_...) : สำหรับฝั่ง Frontend / Client
    • Secret Key (sk_...) : สำหรับฝั่ง Backend ของคุณ (ห้ามเปิดเผย)

ขั้นตอนที่ 2: สร้าง Token สำหรับการเชื่อมต่อ (HMAC)

เพื่อความปลอดภัยสูงสุด ระบบ RawPush จะไม่อนุญาตให้เชื่อมต่อโดยไม่มีลายเซ็นรับรอง (Signature) จาก Secret Key ของคุณ สร้างไฟล์ generateToken.js และรันด้วย Node.js เพื่อสร้าง Token ชั่วคราว:

javascript
// generateToken.js
const crypto = require('crypto');

const secretKey = 'sk_your_secret_key_here';     // ใส่ Secret Key
const publicKey = 'pk_your_public_key_here';     // ใส่ Public Key

const tokenPayload = {
  v: "v1",
  purpose: "ws-auth",
  sub: "user_test_01",
  aud: "websocket",
  iat: Date.now(),
  exp: Date.now() + (60 * 60 * 1000), // หมดอายุใน 1 ชั่วโมง
  jti: crypto.randomUUID()
};

// นำข้อมูลมาต่อกันด้วย \n
const payloadString = `${tokenPayload.v}\n${tokenPayload.purpose}\n${tokenPayload.sub}\n${tokenPayload.aud}\n${tokenPayload.iat}\n${tokenPayload.exp}\n${tokenPayload.jti}`;

// สร้างลายเซ็น
const signature = crypto.createHmac('sha256', secretKey)
  .update(payloadString)
  .digest('hex');

console.log("นำค่านี้ไปใช้ในฝั่ง Client:");
console.log(JSON.stringify({ token: tokenPayload, signature }, null, 2));

รันคำสั่ง node generateToken.js และเก็บผลลัพธ์ไว้ใช้เชื่อมต่อในขั้นตอนถัดไป


ขั้นตอนที่ 3: เขียนโค้ดฝั่ง Client (HTML/JS)

สร้างไฟล์ index.html เปล่าๆ แล้วคัดลอกโค้ดด้านล่างไปวาง (เปลี่ยนค่า Auth ข้อมูลที่ได้จาก Step 2 มาใส่ให้ครบ):

html
<!DOCTYPE html>
<html>
<head>
  <title>RawPush Quickstart</title>
</head>
<body>
  <h1>RawPush Test</h1>
  <div id="messages"></div>

  <script>
    // 1. นำผลลัพธ์จาก generateToken.js มาวางตรงนี้
    const publicKey = 'pk_your_public_key_here';
    const authData = { 
      token: { /* วาง token จาก Node.js */ }, 
      signature: "วาง signature จาก Node.js" 
    };

    // 2. เชื่อมต่อ WebSocket
    const ws = new WebSocket(`wss://api.rawpush.com/ws?app_key=${publicKey}`);

    ws.onopen = () => {
      console.log('✅ เชื่อมต่อ WebSocket สำเร็จ! กำลังส่ง Auth...');
      
      // 3. ยืนยันตัวตน (Auth) ทันทีที่เชื่อมต่อติดภายใน 10 วินาที
      ws.send(JSON.stringify({
        cmd: 'auth',
        token: authData.token,
        signature: authData.signature
      }));
    };

    ws.onmessage = (event) => {
      const msg = JSON.parse(event.data);
      console.log('📩 ได้รับข้อความ:', msg);
      
      // เมื่อยืนยันตัวตนผ่าน ระบบจะตอบกลับ type: reply + status: ok
      if (msg.type === 'reply' && msg.status === 'ok' && msg.data?.session_id) {
        ws.send(JSON.stringify({
          "cmd": "subscribe",
          "channel": "updates:feed"
        }));
      }

      // นำข้อความที่ Server บอร์ดแคสต์มาแสดงผลบนหน้าเว็บ
      if (msg.type === 'event' && msg.event === 'data.info') {
        const div = document.createElement('div');
        div.innerText = msg.data.text;
        document.getElementById('messages').appendChild(div);
      }
    };
  </script>
</body>
</html>

ขั้นตอนที่ 4: ส่งข้อมูลเข้า Server

💡 ลองนำโค้ดใน **ขั้นตอนที่ 2** ไปรันเพื่อยิง Event แล้วดูข้อความที่หน้าต่าง Console สิ!

Server

เปิด Terminal ขึ้นมา แล้วทดลองยิง REST API แบบง่ายๆ (อย่าลืมเปลี่ยน YOUR_SECRET_KEY) ข้อความนี้จะส่งทะลุไปโผล่บนหน้าจอเว็บที่คุณเปิดไว้ในขั้นตอนที่ 3 ทันที!

TIP

คุณสามารถเปิดไฟล์ HTML ทิ้งไว้หลายๆ หน้าต่าง เพื่อดูการทำงานของ Real-time Broadcast ได้

bash
curl -X POST https://api.rawpush.com/api/v1/publish \
  -H "X-Api-Key: sk_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "updates:feed",
    "event": "data.info",
    "data": { "text": "สวัสดี! นี่คือข้อความจาก RawPush" }
  }'

🎉 ยินดีด้วย! คุณสามารถส่งและรับข้อมูล Real-time สำเร็จแล้ว ดูวิธีการเชื่อมต่อฉบับเต็มและตั้งค่าความปลอดภัยต่อในบทถัดไป

Released under the MIT License.