22/04/2026 07:10น.

EP.63 การสร้างระบบการจัดการสิทธิ์ผู้ใช้ใน WebSocket Chat
#WebSocket user permissions
#การควบคุมการเข้าถึงใน WebSocket
#WebSocket chat room management
#ระบบการจัดการสิทธิ์ผู้ใช้
#การจัดการสิทธิ์ผู้ใช้ WebSocket
ใน EP.63 นี้เราจะมาพูดถึงการ สร้างระบบการจัดการสิทธิ์ผู้ใช้ ใน WebSocket Chat โดยระบบนี้จะช่วยให้เราสามารถกำหนดสิทธิ์ต่างๆ ของผู้ใช้ในแต่ละห้องแชทได้ ไม่ว่าจะเป็นการตั้งสิทธิ์ให้ผู้ใช้สามารถส่งข้อความได้, การมอบสิทธิ์การเป็นผู้ดูแลห้องแชท, หรือการตั้งค่าห้ามบางสิ่งในห้องแชท
การจัดการสิทธิ์ผู้ใช้เป็นสิ่งสำคัญในการควบคุมความปลอดภัยและการดำเนินการในห้องแชทแบบเรียลไทม์ ระบบการจัดการสิทธิ์นี้จะช่วยให้ผู้ดูแลห้องแชทสามารถควบคุมการทำงานภายในห้องแชทได้ตามต้องการ เพิ่มความปลอดภัย และทำให้การสนทนาในห้องแชทเป็นระเบียบ
ทำไมต้องมีระบบการจัดการสิทธิ์ผู้ใช้ใน WebSocket Chat?
ระบบการจัดการสิทธิ์ผู้ใช้ (User Permissions) จะช่วยให้ผู้ดูแลห้องแชทสามารถ:
- ควบคุมสิทธิ์การเข้าถึง: สามารถกำหนดได้ว่าผู้ใช้อะไรบ้างที่จะสามารถเข้าร่วมในห้องแชท
- จัดการสิทธิ์การกระทำต่างๆ: ผู้ดูแลสามารถกำหนดสิทธิ์ให้ผู้ใช้สามารถส่งข้อความได้, สามารถลบข้อความ, หรือสามารถแบนผู้ใช้ได้
- เพิ่มความปลอดภัย: สามารถจำกัดสิทธิ์การเข้าถึงของผู้ใช้ไม่ให้สามารถกระทำการที่ไม่เหมาะสมในห้องแชท
- เพิ่มความยืดหยุ่น: ผู้ดูแลสามารถสร้างห้องแชทที่สามารถควบคุมสมาชิกได้อย่างมีระเบียบ
ข้อดีของระบบการจัดการสิทธิ์ผู้ใช้:
- ช่วยให้การควบคุมห้องแชทมีความชัดเจน: ผู้ดูแลสามารถตั้งค่าผู้ใช้ที่สามารถทำกิจกรรมในห้องแชทได้
- ป้องกันการกระทำที่ไม่เหมาะสม: การจัดการสิทธิ์จะช่วยป้องกันไม่ให้เกิดการกระทำที่ไม่เหมาะสมจากผู้ใช้ที่ไม่ได้รับอนุญาต
- ปรับการจัดการห้องแชทให้เหมาะสมกับบทบาทผู้ใช้: เช่น ผู้ดูแลสามารถกำหนดให้ผู้ใช้ทั่วไปไม่สามารถส่งข้อความในบางห้องแชทได้
โครงสร้างของระบบการจัดการสิทธิ์ผู้ใช้ใน WebSocket Chat
การจัดการสิทธิ์ผู้ใช้ต้องการโครงสร้างที่สามารถเก็บข้อมูลการกำหนดสิทธิ์ และส่งข้อมูลสิทธิ์เหล่านั้นไปยังผู้ใช้ในห้องแชทแบบเรียลไทม์
ส่วนประกอบหลักของระบบการจัดการสิทธิ์:
- การเก็บข้อมูลสิทธิ์ผู้ใช้ในฐานข้อมูล:
การจัดเก็บข้อมูลสิทธิ์ของผู้ใช้ที่สามารถเข้าถึงห้องแชท, การส่งข้อความ, การแบนสมาชิก ฯลฯ ในฐานข้อมูล - การตรวจสอบสิทธิ์ผู้ใช้:
เมื่อผู้ใช้ทำการเชื่อมต่อหรือส่งข้อความ ระบบต้องตรวจสอบสิทธิ์ก่อนการกระทำ - การส่งข้อมูลสิทธิ์ไปยังผู้ใช้:
เมื่อผู้ใช้เข้าร่วมห้องแชท, ระบบจะส่งข้อมูลเกี่ยวกับสิทธิ์การทำงานให้กับผู้ใช้ทันที
การเพิ่มฟีเจอร์การจัดการสิทธิ์ผู้ใช้ใน WebSocket Server
การเพิ่มฟีเจอร์การจัดการสิทธิ์ผู้ใช้ใน WebSocket Server สามารถทำได้โดยการอัปเดตโค้ดให้สามารถจัดการสิทธิ์ต่างๆ ในการเชื่อมต่อแต่ละครั้ง
ขั้นตอนที่ต้องทำ:
- อัปเดต WebSocket Server:
เพิ่มฟังก์ชันในการตรวจสอบสิทธิ์ของผู้ใช้ก่อนอนุญาตให้ส่งข้อความหรือเข้าห้องแชท - การจัดเก็บสิทธิ์ในฐานข้อมูล:
เพิ่มคอลัมน์ในฐานข้อมูลเพื่อจัดเก็บข้อมูลสิทธิ์ของผู้ใช้ - ส่งข้อมูลสิทธิ์ไปยังผู้ใช้:
ส่งข้อมูลสิทธิ์การทำงานให้กับผู้ใช้ทุกคนในห้องแชทแบบเรียลไทม์
สร้าง UI เพื่อการจัดการสิทธิ์ผู้ใช้
UI สำหรับการจัดการสิทธิ์ผู้ใช้จะช่วยให้ผู้ดูแลห้องแชทสามารถกำหนดสิทธิ์และจัดการผู้ใช้งานในห้องแชทได้ง่ายๆ
ส่วนประกอบของ UI:
- ปุ่มสำหรับการตั้งค่าห้องแชท:
เช่น ปุ่มเพื่อเพิ่มหรือลบสมาชิกจากห้องแชท - แสดงสิทธิ์การทำงาน:
แสดงสถานะการเป็นผู้ดูแลห้องแชทหรือสิทธิ์การส่งข้อความของผู้ใช้ - การแบนผู้ใช้:
เพิ่มปุ่มที่สามารถแบนผู้ใช้ที่กระทำการไม่เหมาะสม
การทดสอบระบบการจัดการสิทธิ์ผู้ใช้
หลังจากที่พัฒนาระบบการจัดการสิทธิ์ผู้ใช้แล้ว จำเป็นต้องทดสอบการทำงานเพื่อให้มั่นใจว่าแต่ละฟีเจอร์ทำงานได้อย่างถูกต้อง
การทดสอบที่ควรทำ:
- ทดสอบการจัดการสมาชิกห้องแชท:
ทดสอบการเพิ่มและลบสมาชิกจากห้องแชท - ทดสอบการตรวจสอบสิทธิ์:
ทดสอบว่าผู้ใช้สามารถทำการต่างๆ ได้หรือไม่ตามสิทธิ์ที่ได้รับ - ทดสอบการแบนผู้ใช้:
ทดสอบว่าผู้ดูแลห้องสามารถแบนผู้ใช้ได้อย่างถูกต้อง
ตัวอย่างโค้ด:
การเพิ่มฟีเจอร์การจัดการสิทธิ์ผู้ใช้ใน WebSocket Server
package main
import (
"fmt"
"net/http"
"github.com/gorilla/websocket"
"sync"
)
var clients = make(map[*websocket.Conn]bool)
var mu sync.Mutex
func handleConnection(w http.ResponseWriter, r *http.Request) {
conn, _ := upgrader.Upgrade(w, r, nil)
defer conn.Close()
// ตรวจสอบสิทธิ์ผู้ใช้ก่อนเข้าห้องแชท
if !checkUserPermission(conn) {
fmt.Println("User does not have permission to join the chat room.")
return
}
clients[conn] = true
for {
_, _, err := conn.ReadMessage()
if err != nil {
delete(clients, conn)
break
}
}
}
func checkUserPermission(conn *websocket.Conn) bool {
// เช็คสิทธิ์ของผู้ใช้จากฐานข้อมูลหรือจาก token
return true // สำหรับตัวอย่างนี้ให้ส่งผ่าน
}
func main() {
http.HandleFunc("/ws", handleConnection)
fmt.Println("WebSocket server running on port 8080")
http.ListenAndServe(":8080", nil)
}
ในโค้ดตัวอย่างนี้ เราจะตรวจสอบสิทธิ์ของผู้ใช้ก่อนอนุญาตให้เข้าร่วมในห้องแชท
ท้าให้ลอง!
ลองเพิ่ม ฟีเจอร์การตั้งค่าห้องแชทแบบเป็นส่วนตัว เพื่อให้ผู้ใช้สามารถตั้งค่าห้องแชทให้เป็นส่วนตัวได้ตามต้องการ!
EP ถัดไป:
ใน EP.64 เราจะมาดู การจัดการข้อผิดพลาด (Error Handling) ใน WebSocket Server ด้วย Golang เพื่อให้ระบบ WebSocket ของเรามีความทนทานต่อข้อผิดพลาดและสามารถจัดการกับข้อผิดพลาดที่เกิดขึ้นได้อย่างมีประสิทธิภาพ!