Skip to content

Sockudo ​

Tổng quan ​

Sockudo là WebSocket server tự host, tốc độ cao và tương thích giao thức Pusher. Dùng Sockudo để thêm tính năng realtime (thông báo, cập nhật trực tiếp, chat) cho ứng dụng mà không cần trả phí dịch vụ bên ngoài. Laravel Broadcasting, Laravel Echo và pusher-js dùng được với Sockudo mà không phải sửa code: bạn chỉ cần trỏ chúng về máy chủ của mình.

Sockudo thay thế Soketi, vốn không còn được cập nhật.

Cài đặt Sockudo ​

  1. Vào FlashPanel > Máy chủ > máy chủ của bạn > Ứng dụng và mở tab Chưa cài đặt.
  2. Tìm Sockudo và bấm Cài đặt.
  3. Chọn Phiên bản và nhập Port mà Sockudo lắng nghe (mặc định 6001). Bấm Cài đặt.
  4. Theo dõi tiến trình ở trang Sự kiện. Quá trình cài đặt thường mất chưa tới 1 phút.

Khi cài xong, FlashPanel tự tạo một app với App ID, Key và Secret ngẫu nhiên. Sockudo tự khởi động và tự chạy lại khi máy chủ khởi động lại.

Lấy thông tin kết nối ​

  1. Ở tab Đã cài đặt của trang Ứng dụng, bấm nút Cấu hình (biểu tượng bánh răng) trên dòng Sockudo.
  2. File cấu hình được mở ra. Tìm mục [[app_manager.array.apps]]:
toml
[[app_manager.array.apps]]
id = "..."      # App ID
key = "..."     # App Key
secret = "..."  # App Secret

Dòng port ở đầu file là port Sockudo đang lắng nghe.

Kết nối ứng dụng Laravel ​

  1. Mở file .env của website và đặt các giá trị sau. Thay phần giữ chỗ bằng thông tin trong file cấu hình và tên miền của bạn:
ini
BROADCAST_CONNECTION=pusher

PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_HOST=127.0.0.1
PUSHER_PORT=6001
PUSHER_SCHEME=http

VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST=your-domain.com
VITE_PUSHER_PORT=443
VITE_PUSHER_SCHEME=https
  1. Build lại frontend (ví dụ npm run build) để trình duyệt dùng giá trị VITE_PUSHER_* mới.
  • PUSHER_* dùng cho backend Laravel gửi sự kiện. Khi website và Sockudo cùng một máy chủ, giữ 127.0.0.1 và port của Sockudo.
  • VITE_PUSHER_* dùng cho trình duyệt kết nối. Dùng tên miền của bạn với port 443 và https, rồi cấu hình proxy Nginx bên dưới.

Kết nối qua tên miền có SSL ​

Trình duyệt trên website HTTPS chỉ mở được kết nối WebSocket bảo mật (wss://). Proxy Sockudo qua Nginx của website để dùng chung tên miền và chứng chỉ SSL:

  1. Mở website và sửa cấu hình Nginx.
  2. Thêm block sau vào trong block server { ... } lắng nghe port 443. Đổi 6001 nếu bạn chọn port khác:
nginx
location /app {
    proxy_pass http://127.0.0.1:6001;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 60;
}
  1. Lưu cấu hình. Trình duyệt sẽ kết nối tới wss://your-domain.com/app/your-app-key.

Đổi port hoặc cấu hình ​

  1. Bấm nút Cấu hình trên dòng Sockudo và sửa file (ví dụ đổi port = 6001).
  2. Lưu file.
  3. Bấm Khởi động lại trên dòng Sockudo để áp dụng thay đổi.
  4. Cập nhật PUSHER_PORT trong .env và port trong proxy_pass của Nginx cho khớp.

Xem log ​

Bấm nút Nhật ký trên dòng Sockudo để xem log. Bạn cũng có thể khởi động, dừng hoặc khởi động lại Sockudo ở trang Systemd Service.

Chuyển từ Soketi ​

Soketi không còn hiện trong tab Chưa cài đặt. Máy chủ đã cài Soketi vẫn chạy bình thường và vẫn gỡ được.

  1. Ở tab Đã cài đặt, bấm Gỡ cài đặt trên dòng Soketi và xác nhận.
  2. Cài Sockudo theo hướng dẫn ở trên. Nếu giữ port mặc định 6001, cần gỡ Soketi trước vì hai ứng dụng dùng chung port.
  3. Cập nhật PUSHER_APP_ID, PUSHER_APP_KEY và PUSHER_APP_SECRET trong .env bằng giá trị mới trong file cấu hình Sockudo, rồi build lại frontend.

Ghi chú & Cảnh báo ​

  • Lưu ý: Cài lại hoặc cập nhật Sockudo giữ nguyên file cấu hình hiện có, nên App ID, Key, Secret và port không đổi. Port nhập khi cài lại sẽ bị bỏ qua; hãy đổi port trong file cấu hình.
  • Lưu ý: Khởi động lại Sockudo sẽ ngắt kết nối mọi client trong vài giây. Laravel Echo và pusher-js tự kết nối lại, nhưng sự kiện gửi trong lúc đó sẽ bị mất.
  • Cảnh báo: Giữ bí mật Secret. Ai có Secret đều gửi được sự kiện tới người dùng của bạn. Không đặt Secret trong biến VITE_* hay code frontend.
  • Cảnh báo: Không mở port Sockudo ở Quy tắc tường lửa trừ khi client cần kết nối trực tiếp. Kết nối qua tên miền với Nginx an toàn hơn và hỗ trợ SSL.