วิธีตั้งค่าและใช้ Supabase Realtime สร้างแอปพลิเคชันเว็บแบบเรียลไทม์อย่างปลอดภัย

ที่มาภาพ: Unknown Source

วิธีตั้งค่าและใช้ Supabase Realtime สร้างแอปพลิเคชันเว็บแบบเรียลไทม์อย่างปลอดภัย

⚡ สรุป 30 วิ

Supabase Realtime ให้คุณสร้างแอปเว็บที่อัปเดตข้อมูลแบบทันทีโดยไม่ต้องรีเฟรชหน้าเว็บ บริการนี้ทำงานบน WebSocket และผสานกับ PostgreSQL อย่างลึกซึ้ง การตั้งค่าอย่างถูกต้องจะช่วยให้ระบบปลอดภัยและรองรับผู้…

ภาพรวม — Overview

Supabase Realtime ให้คุณสร้างแอปเว็บที่อัปเดตข้อมูลแบบทันทีโดยไม่ต้องรีเฟรชหน้าเว็บ บริการนี้ทำงานบน WebSocket และผสานกับ PostgreSQL อย่างลึกซึ้ง การตั้งค่าอย่างถูกต้องจะช่วยให้ระบบปลอดภัยและรองรับผู้ใช้จำนวนมาก

  • Realtime ทำหน้าที่ส่งข้อมูลเปลี่ยนแปลงจากฐานข้อมูลไปยังไคลเอนต์แบบเรียลไทม์
  • Supabase มี **Row‑Level Security (RLS) เพื่อควบคุมสิทธิการอ่าน/เขียนของแต่ละผู้ใช้
  • การผสานกับ Supabase Auth ทำให้คุณจัดการผู้ใช้และ token ได้อย่างง่ายดาย
**Tip: เริ่มต้นด้วยโครงการทดลองบนแผนฟรีเพื่อทดสอบฟีเจอร์ก่อนย้ายไปใช้งานจริง

ความต้องการเบื้องต้น — Prerequisites

ก่อนลงมือทำให้ตรวจสอบว่าคุณมีสิ่งต่อไปนี้พร้อมแล้ว

  • บัญชี Supabase (สมัครที่ https://supabase.com)
  • Node.js เวอร์ชัน 14 ขึ้นไป หรือ Framework เว็บที่รองรับ JavaScript/TypeScript
  • ความรู้พื้นฐานเกี่ยวกับ SQL และ HTTP API
  • เครื่องมือพัฒนาอย่าง VS Code หรือ IDE ที่คุณถนัด
**Tip: หากใช้ React ให้ติดตั้ง `@supabase/supabase-js` เวอร์ชันล่าสุดเพื่อเข้าถึงฟีเจอร์ใหม่ ๆ อย่างเต็มที่

สร้างโปรเจกต์ Supabase — Create Project

การสร้างโปรเจกต์เป็นขั้นตอนแรกที่สำคัญที่สุด

  • เข้าสู่ Dashboard ของ Supabase แล้วคลิก “New project”
  • กำหนดชื่อฐานข้อมูล, รหัสผ่านผู้ดูแล (ควรใช้ password ที่ซับซ้อน) และเลือก region ใกล้กับผู้ใช้เป้าหมาย
  • หลังจากสร้างเสร็จ ระบบจะให้ API URL และ anon public key ซึ่งต้องบันทึกไว้
รายการคำอธิบาย
API URLจุดเชื่อมต่อ HTTP ของโปรเจกต์
anon public keyใช้สำหรับการเรียก API จากฝั่งไคลเอนต์ (อ่าน‑only)
service_role keyมีสิทธิเต็มที่ ควรเก็บเป็นความลับและใช้บนเซิร์ฟเวอร์เท่านั้น
**Warning: อย่าเผย `service_role` key ไปยังโค้ดฝั่งลูกค้า มิฉะนั้นระบบอาจถูกโจมตีได้ง่าย

เปิดใช้งาน Realtime — Enable Realtime

Supabase มี Realtime ปิดอยู่เป็นค่าเริ่มต้นในบางตาราง

  • เข้าไปที่ “Database Replication” แล้วเปิดสวิตช์ Realtime สำหรับฐานข้อมูลทั้งหมดหรือเฉพาะตารางที่ต้องการ
  • ตรวจสอบว่า RLS ถูกเปิดบนตารางนั้น ๆ (จะเห็น checkbox ในหน้า “Table editor”)
  • หากต้องการฟิลเตอร์ข้อมูลเพิ่มเติม ให้ตั้งค่า Replication filters เช่น `INSERT, UPDATE` เฉพาะคอลัมน์ที่สำคัญ
**Tip: เปิด Realtime เฉพาะตารางที่จำเป็น จะลดโหลดบนเซิร์ฟเวอร์และเพิ่มความปลอดภัย

เชื่อมต่อจาก Frontend — Connect from Frontend

ใช้ไลบรารี `@supabase/supabase-js` เพื่อเชื่อมต่อ WebSocket

```js import { createClient } from '@supabase/supabase-js'

const supabase = createClient( 'https://YOUR-PROJECT.supabase.co', 'YOUR-ANON-PUBLIC-KEY' )

// Subscribe to changes ของตาราง messages supabase.channel('public:messages') .on('postgres_changes', { event: '*', schema: 'public', table: 'messages' }, payload => { console.log('เปลี่ยนแปลง:', payload) // อัปเดต UI ตาม payload ใหม่ }) .subscribe() ```

  • ใช้ `.channel()` เพื่อกำหนดชื่อช่องและตั้งค่า filter (เช่น `INSERT` เท่านั้น)
  • อย่าลืมจัดการ unsubscribe เมื่อคอมโพเนนต์ถูกทำลายเพื่อป้องกัน memory leak
**Tip: เก็บอ็อบเจ็กต์ Supabase เป็น singleton เพื่อหลีกเลี่ยงการสร้างหลาย connection

ปรับความปลอดภัยด้วย RLS — Secure with Row‑Level Security

RLS คือตัวกรองระดับแถวที่ทำงานบน PostgreSQL

  • เปิด RLS บนตารางเป้าหมาย (เช่น `messages`)
  • สร้าง policy เพื่อจำกัดการเข้าถึงตามผู้ใช้

```sql -- อนุญาตให้ผู้ใช้ดูเฉพาะข้อความของตัวเอง create policy "Owner can select" on public.messages for select using (auth.uid() = user_id); ```

  • เพิ่ม policy สำหรับ `INSERT` และ `UPDATE` เพื่อบังคับให้ต้องมี `user_id` ตรงกับ `auth.uid()`

```sql create policy "Owner can insert" on public.messages for insert with check (auth.uid() = user_id); ```

**Warning: อย่าลืมทดสอบ Policy ทุกกรณีเพื่อป้องกันการรั่วข้อมูลโดยบังเอิญ

ตั้งค่าการยืนยันตัวตน — Authentication Setup

Supabase Auth รองรับหลายวิธี (Email/Password, OAuth, Magic Link)

  • เปิดใช้งานผู้ให้บริการที่ต้องการใน “Auth Settings External OAuth Providers”
  • ปรับ `Redirect URLs` ให้ตรงกับโดเมนของแอปพลิเคชัน
วิธียืนยันความปลอดภัยการตั้งค่า
Email/Passwordปานกลาง (ต้องใช้ HTTPS)เปิด “Email confirmations” เพื่อบังคับให้ผู้ใช้ยืนยันอีเมล
OAuth (Google, GitHub ฯลฯ)สูง (ใช้ token ของผู้ให้บริการ)ตั้ง `Client ID` และ `Secret` จากผู้ให้บริการ
Magic Linkสูง (ไม่มีรหัสผ่าน)เปิด “Enable magic link” และกำหนดเวลาอายุของลิงก์
  • หลังจากล็อกอินสำเร็จ ให้บันทึก access token ใน `localStorage` หรือ `sessionStorage` แล้วใช้กับ Realtime เพื่อให้ server ตรวจสอบสิทธิ
Tip: หากต้องการความปลอดภัยระดับ enterprise ควรใช้งาน JWT** ที่มีอายุสั้นและรีเฟรช token อย่างสม่ำเสมอ

ปรับแต่งการ Deploy และทดสอบ — Deploy & Test

เมื่อโค้ดพร้อมให้บริการ

  • สร้างไฟล์ `.env` บนเซิร์ฟเวอร์ด้วยค่า `SUPABASE_URL`, `SUPABASE_ANON_KEY`, `SUPABASE_SERVICE_ROLE_KEY` (ใช้เฉพาะฝั่ง backend)
  • Deploy ด้วย Vercel, Netlify หรือ Cloudflare Workers โดยตั้งค่า environment variables ให้ตรงกับ `.env`

ขั้นตอนทดสอบเบื้องต้น

  • ตรวจสอบการเชื่อมต่อ WebSocket ผ่าน DevTools Network WS
  • สร้างข้อมูลใหม่ในตารางและตรวจสอบว่า UI ของผู้ใช้รับอัปเดตโดยอัตโนมัติ
  • ทดลองล็อกอินด้วยบัญชีที่ต่างกันเพื่อยืนยันว่าตารางแสดงเฉพาะข้อมูลของเจ้าของเท่านั้น
**Warning: อย่าลืมตั้งค่า CORS ใน “API Settings” เพื่อจำกัดโดเมนที่สามารถเข้าถึง API ของ Supabase

เคล็ดลับและข้อควรระวัง — Tips & Common Pitfalls

  • ใช้ `max_retries: 3` เมื่อเชื่อมต่อ WebSocket เพื่อลดการพยายามเชื่อมต่อซ้ำบ่อยเกินไป
  • ปิด Realtime บนตารางที่ไม่ได้ใช้จริงเพื่อลดค่าใช้จ่ายและปริมาณ traffic
  • ตรวจสอบว่าเวลาของเซิร์ฟเวอร์และไคลเอนต์ตรงกัน (UTC) เพื่อหลีกเลี่ยงการตรวจสอบ token ผิดพลาด
**Tip: หากพบว่าอัปเดตไม่เกิดขึ้น ให้เช็คว่า `auth.uid()` ตรงกับค่าในคอลัมน์ `user_id` ของแถวที่เกี่ยวข้อง

สรุป — Summary

Supabase Realtime เป็นเครื่องมือที่ทำให้การสร้างเว็บเรียลไทม์เป็นเรื่องง่ายโดยไม่ต้องดูแลโครงสร้างพื้นฐานเอง การตั้งค่าที่ถูกต้องและการใช้ RLS ร่วมกับ Auth จะช่วยรักษาความปลอดภัยของข้อมูลได้อย่างมีประสิทธิภาพ

  • สร้างโปรเจกต์ เปิด Realtime ตั้งค่า RLS
  • เชื่อมต่อไคลเอนต์ ด้วย `@supabase/supabase-js` กำหนด channel & filter
  • จัดการ Auth ให้ผู้ใช้ได้รับ token ที่ปลอดภัยและใช้เพื่อยืนยันสิทธิบน WebSocket
**สรุปที่ควรจำ: เปิด Realtime เฉพาะตารางสำคัญ, ใช้ RLS ป้องกันข้อมูลรั่วไหล, เก็บ `service_role` key ไว้ในฝั่งเซิร์ฟเวอร์เท่านั้น และทดสอบการทำงานทุกขั้นตอนก่อนเปิดใช้งานจริง.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีตั้งค่าและใช้ Supabase Realtime สร้างแอปพลิเคชันเว็บแบบเรียลไทม์อย่างปลอดภัย
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
10 สิงหาคม 2569 เวลา 19:51

Related

บทความที่เกี่ยวข้อง

วิธีตั้งค่าและใช้งาน WireMock บน Docker สร้าง Mock API เพื่อการทดสอบอัตโนมัติGrowth
10 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่าและใช้งาน WireMock บน Docker สร้าง Mock API เพื่อการทดสอบอัตโนมัติ

WireMock เป็นเครื่องมือที่ช่วยสร้าง *Mock API* เพื่อจำลองพฤติกรรมของบริการจริงในขั้นตอนทดสอบอัตโนมัติ การใช้งานบน Docker ทำให้การตั้งค่าเป็นแบบ *portable* และสามารถทำงานร่วมกับ CI/CD pipeline ได้อย่าง…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ6 นาที
วิธีตั้งค่าและใช้ Fastlane กับ GitHub Actions เพื่ออัตโนมัติการปล่อยแอป Android iOS อย่างปลอดภัยGrowth
10 สิงหาคม 2569 เวลา 19:00

วิธีตั้งค่าและใช้ Fastlane กับ GitHub Actions เพื่ออัตโนมัติการปล่อยแอป Android iOS อย่างปลอดภัย

Fastlane เป็นเครื่องมือที่ช่วยอัตโนมัติขั้นตอนการสร้างและปล่อยแอป iOS/Android ได้อย่างครบวงจร การผสานกับ GitHub Actions ทำให้กระบวนการ CI/CD สามารถทำงานบนคลาวด์โดยไม่ต้องจัดการเซิร์ฟเวอร์เอง บทความนี้…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีใช้ Cloudflare R2 ร่วมกับ Supabase Edge Functions เพื่อจัดเก็บไฟล์แบบปลอดภัยบน EdgeGrowth
10 สิงหาคม 2569 เวลา 11:30

วิธีใช้ Cloudflare R2 ร่วมกับ Supabase Edge Functions เพื่อจัดเก็บไฟล์แบบปลอดภัยบน Edge

การจัดเก็บไฟล์บน Edge ช่วยลด latency และเพิ่มความปลอดภัยให้กับแอปพลิเคชันของคุณ Supabase Edge Functions เป็นจุดเชื่อมต่อระหว่างฟรอนท์เอนด์และบริการคลาวด์ Cloudflare R2 ให้พื้นที่จัดเก็บแบบไม่มีค่า egr…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ10 นาที
วิธีตั้งค่า Cloudflare Workers‑KV เพื่อจัดเก็บข้อมูลแบบ Edge อย่างปลอดภัยGrowth
9 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่า Cloudflare Workers‑KV เพื่อจัดเก็บข้อมูลแบบ Edge อย่างปลอดภัย

Cloudflare Workers‑KV เป็นฐานข้อมูลแบบ key‑value ที่ทำงานบนเครือข่าย Edge ของ Cloudflare ทำให้ข้อมูลสามารถเข้าถึงได้จากจุดใกล้ผู้ใช้ที่สุด ลด latency อย่างมีประสิทธิภาพ การตั้งค่า KV ให้ปลอดภัยเป็นขั้…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
คัดลอกลิงก์แล้ว!