การดู : 244

22/04/2026 07:10น.

EP.58 การเพิ่มฟีเจอร์การแจ้งเตือนแบบพุช (Push Notification) ใน WebSocket Chat

EP.58 การเพิ่มฟีเจอร์การแจ้งเตือนแบบพุช (Push Notification) ใน WebSocket Chat

#Push notification WebSocket

#real-time notifications

#WebSocket chat push notifications

#การพัฒนาแอปพลิเคชันแชท

#real-time alerts

#ฟีเจอร์ WebSocket

#Go

#push notification service

ฟีเจอร์การแจ้งเตือนแบบพุชใน WebSocket Chat ช่วยให้ผู้ใช้ได้รับการแจ้งเตือนแบบเรียลไทม์เมื่อมีข้อความใหม่หรือการอัปเดตสำคัญในห้องแชท ฟีเจอร์นี้ช่วยเพิ่มประสิทธิภาพในการสื่อสาร โดยผู้ใช้ไม่ต้องรอตามข้อความในห้องแชทและสามารถตอบสนองได้ทันทีเมื่อล็อกอินหรือเปิดแอปพลิเคชัน

 

ทำไมต้องมีฟีเจอร์การแจ้งเตือนแบบพุช?

การแจ้งเตือนแบบพุชเป็นฟีเจอร์สำคัญที่ช่วยให้ผู้ใช้ไม่พลาดข้อมูลสำคัญในห้องแชท การแจ้งเตือนทันทีเมื่อมีข้อความใหม่หรือการอัปเดตจะทำให้ผู้ใช้สามารถตอบสนองได้ทันที โดยไม่ต้องเสียเวลาในการตรวจสอบด้วยตนเอง นอกจากนี้ยังช่วยในการสื่อสารอย่างรวดเร็วในห้องแชทที่มีการอัปเดตตลอดเวลา

ข้อดีของการแจ้งเตือนแบบพุช:

  • ไม่พลาดข้อมูลสำคัญ: ผู้ใช้จะได้รับการแจ้งเตือนทันทีเมื่อมีการส่งข้อความใหม่
  • เพิ่มประสิทธิภาพในการสื่อสาร: ผู้ใช้สามารถตอบกลับได้ทันทีโดยไม่ต้องรอให้ข้อความถูกเห็น
  • สะดวกและรวดเร็ว: ช่วยให้ผู้ใช้ไม่ต้องคอยเปิดแอปพลิเคชันตลอดเวลา

 

โครงสร้างของระบบการแจ้งเตือนแบบพุชใน WebSocket Chat

การแจ้งเตือนแบบพุชจะทำงานร่วมกับ WebSocket Server โดยการส่งข้อมูลการแจ้งเตือนจากเซิร์ฟเวอร์ไปยังผู้ใช้ที่เชื่อมต่ออยู่ในห้องแชท โดยอาศัยการตั้งค่าผ่าน Push Notification API เพื่อส่งข้อความแจ้งเตือนไปยังอุปกรณ์ของผู้ใช้

ส่วนประกอบหลักของระบบการแจ้งเตือนแบบพุช:

  • การตั้งค่าการแจ้งเตือนใน WebSocket Server: เซิร์ฟเวอร์จะรับและส่งข้อมูลการแจ้งเตือนเมื่อมีข้อความใหม่หรือการอัปเดตในห้องแชท
  • การใช้ Push Notification API: ใช้บริการ Push Notification API ที่ให้บริการส่งการแจ้งเตือนไปยังอุปกรณ์ผู้ใช้
  • การแสดงผลการแจ้งเตือนใน UI: ผู้ใช้สามารถเห็นการแจ้งเตือนผ่านการแสดงผลใน UI ของแอปพลิเคชัน

 

วิธีการเพิ่มฟีเจอร์การแจ้งเตือนแบบพุชใน WebSocket Server

การอัปเดต WebSocket Server เพื่อรองรับการส่งการแจ้งเตือนแบบพุชและการจัดการการแจ้งเตือนที่เกี่ยวข้องกับห้องแชท

ขั้นตอนที่ต้องทำ:

  • การเชื่อมต่อ WebSocket Server กับ Push Notification API: เซิร์ฟเวอร์จะต้องเชื่อมต่อกับ Push Notification API ที่ให้บริการการส่งการแจ้งเตือน
  • การส่งข้อมูลการแจ้งเตือน: เมื่อมีข้อความใหม่หรือการอัปเดตในห้องแชท เซิร์ฟเวอร์จะส่งการแจ้งเตือนไปยังผู้ใช้ที่เชื่อมต่อ
  • การจัดการการแจ้งเตือน: เมื่อการแจ้งเตือนถูกส่งออกไปแล้ว ผู้ใช้จะได้รับการแจ้งเตือนทันที

 

การสร้าง UI สำหรับการแสดงการแจ้งเตือนใน WebSocket Chat

เพื่อให้ผู้ใช้สามารถรับการแจ้งเตือนแบบพุช เราจะเพิ่มฟังก์ชันแสดงการแจ้งเตือนใน UI ของแอปพลิเคชัน โดยแสดงการแจ้งเตือนในรูปแบบป๊อปอัพหรือในมุมมองที่สะดวก

ส่วนประกอบของ UI:

  • การแสดงป๊อปอัพการแจ้งเตือน: เมื่อมีข้อความใหม่ ระบบจะส่งป๊อปอัพแจ้งเตือนไปยังผู้ใช้ที่เชื่อมต่อ
  • การแสดงข้อความแจ้งเตือนใน UI: เมื่อการแจ้งเตือนมาถึง จะมีข้อความแสดงใน UI เพื่อให้ผู้ใช้สามารถตอบกลับได้ทันที
  • การตั้งค่าให้ผู้ใช้สามารถเปิดหรือปิดการแจ้งเตือน: ผู้ใช้สามารถเลือกเปิดหรือปิดการแจ้งเตือนตามต้องการ

 

การทดสอบฟีเจอร์การแจ้งเตือนแบบพุช

การทดสอบฟีเจอร์การแจ้งเตือนแบบพุชเป็นสิ่งสำคัญ เพื่อให้มั่นใจว่าเมื่อมีข้อความใหม่หรือการอัปเดตในห้องแชท ผู้ใช้จะได้รับการแจ้งเตือนทันที

การทดสอบที่ควรทำ:

  • ทดสอบการส่งการแจ้งเตือนแบบพุช: ทดสอบว่าเมื่อข้อความใหม่ถูกส่งออกไป ระบบสามารถส่งการแจ้งเตือนแบบพุชไปยังผู้ใช้ได้
  • ทดสอบการแสดงผลการแจ้งเตือนใน UI: ตรวจสอบว่า UI แสดงการแจ้งเตือนให้ผู้ใช้เห็นได้ทันที
  • ทดสอบการตอบสนองของผู้ใช้: ทดสอบว่าเมื่อผู้ใช้คลิกการแจ้งเตือนแล้ว ระบบจะทำการแสดงข้อความในห้องแชทได้ถูกต้อง

 

ตัวอย่างโค้ดสำหรับการแจ้งเตือนแบบพุชใน WebSocket Chat

  1. การอัปเดต WebSocket Server (Backend)

การเชื่อมต่อกับ Push Notification API และการส่งการแจ้งเตือน

package main

import (
    "database/sql"
    "encoding/json"
    "fmt"
    "net/http"
    "sync"

    "github.com/gorilla/websocket"
    _ "github.com/lib/pq"
)

type PushNotificationRequest struct {
    Message string `json:"message"`
    UserID  string `json:"user_id"`
}

var (
    clients   = make(map[*websocket.Conn]bool)
    broadcast = make(chan PushNotificationRequest)
    mu        sync.Mutex
    db        *sql.DB
)

func sendPushNotification(message string, userID string) {
    // Call your Push Notification API to send notifications
    fmt.Printf("Sending push notification to %s: %s\n", userID, message)
}

func handleChat(w http.ResponseWriter, r *http.Request) {
    conn, _ := upgrader.Upgrade(w, r, nil)
    defer conn.Close()
    clients[conn] = true

    for {
        var message PushNotificationRequest
        err := conn.ReadJSON(&message)
        if err != nil {
            delete(clients, conn)
            break
        }

        // Send push notification
        sendPushNotification(message.Message, message.UserID)

        broadcast <- message
    }
}

func notifyClients() {
    for {
        msg := <-broadcast
        for client := range clients {
            err := client.WriteJSON(msg)
            if err != nil {
                client.Close()
                delete(clients, client)
            }
        }
    }
}

func main() {
    http.HandleFunc("/ws", handleChat)
    go notifyClients()
    fmt.Println("WebSocket Server Running on Port 8080")
    http.ListenAndServe(":8080", nil)
}
  1. โค้ดใน Frontend (Client)

เพิ่มการแสดงการแจ้งเตือนใน UI

const socket = new WebSocket("ws://localhost:8080/ws");
const chatContainer = document.getElementById("chat-container");

socket.onmessage = (event) => {
    const data = JSON.parse(event.data);
    const messageElement = document.createElement("p");
    messageElement.innerText = `${data.message}`;
    chatContainer.appendChild(messageElement);

    // Display notification
    new Notification("New message", { body: data.message });
};

function sendMessage(message) {
    socket.send(JSON.stringify({ message }));
}

 


 

ท้าให้ลอง!

ลองเพิ่มฟีเจอร์ การแสดงผลการแจ้งเตือนแบบพุชใน UI เพื่อให้ผู้ใช้สามารถเห็นการแจ้งเตือนได้ทันทีที่มีข้อความใหม่!

 

EP ถัดไป:
ใน EP ถัดไป เราจะมาดู การทำให้ WebSocket Server รองรับการสเกล (Scalability) ด้วย Redis เพื่อให้สามารถรองรับการขยายขนาดของแอปพลิเคชันได้ดีขึ้น!