Subscribe to Continue Downloading

Redirecting...
Code PHP Caro Online Realtime nen tang Laravel 11 Reverb 2 - Code PHP Caro Online Realtime nền tảng Laravel 11 & Reverb

Code PHP Caro Online Realtime nền tảng Laravel 11 & Reverb

by Phương Linhin , on August 22, 2024

Choose Your Desired Option(s)

Code PHP Caro Online Realtime nền tảng Laravel 11 & Reverb

Laravel Caro là một ứng dụng game Caro Online realtime đơn giản

 

Code PHP Caro Online Realtime nen tang Laravel 11 Reverb 2 - Code PHP Caro Online Realtime nền tảng Laravel 11 & Reverb

Code PHP Caro Online Realtime nen tang Laravel 11 Reverb 3 副本 - Code PHP Caro Online Realtime nền tảng Laravel 11 & Reverb

Tech Stuff

  • PHP 8.2+
  • Laravel 11
  • Laravel Reverb (WebSocket)
  • MySQL
  • Node 18+
  • Vue 3 x TypeScript
  • TailwindCSS FTW

Setup

1. Setup dependencies

Sử dụng PHP 8.2+ và Node 18+

composer install # first time only
npm ci # first time only
cp .env.example .env # first time only
php artisan key:generate # first time only
 

2. Prepare ENVs

ENVs cơ bản

APP_URL=http://localhost:8000 # quan trọng
SESSION_DOMAIN=.localhost # quan trọng

AUTH_GUARD=api

 

Database ENVs

Tùy theo các bạn, tôi xài MySQL nên sử dụng MySQL.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_caro
DB_USERNAME=root
DB_PASSWORD=
 

(Không quan trọng) Redis

Nếu được, hãy cài Redis và dùng CACHE_STORE=redis

Generate JWT Secret

php artisan jwt:secret
 

Acquire Google OAUTH Keys

Vào trang Console Google và tạo 1 project mới.

Sau đó vào OAuth Consent Screen và tạo 1 app testing.

  • User Type: External
  • Nhớ thêm testing users (Gmail của bạn, ko thì ko login dc đâu).
  • Authorized domains: điền tạm 1 domain nào đó, có thể tạo 1 domain từ ngrok cũng được
  • Scopes: userinfo.email, userinfo.profile và openid. Chỉ 3 cái này thôi nhé.
  • Còn lại cứ next next

Sau đó vào Credentials và tạo OAuth 2.0 Client ID. Lưu ý, Authorized redirect URIs thì điền vào cái localhost của bạn (e.g.: http://localhost:8000/login-with-google)

Sau khi tạo xong, chúng ta sẽ update 3 cái ENVs này:

GOOGLE_OAUTH_CLIENT_ID=
GOOGLE_OAUTH_CLIENT_SECRET=
GOOGLE_OAUTH_REDIRECT_URI=http://localhost:8000/login-with-google
 

3. Migration

php artisan migrate
 

4. Start

npm run build # build frontend
php artisan serve # localhost:8000 – web server
php artisan reverb:start # localhost:8080 – reverb ws server
 

5. Truy cập và sử dụng

Truy cập vào localhost:8000 và bắt đầu chơi thử.

 

Để chơi được

  • Tạo tài khoản (thông qua đăng nhập Google)
  • Tạo phòng
  • Đợi người chơi thứ 2 vào phòng (thông qua URL hoặc rooms list)
  • Đợi người chơi thứ 2 chuyển sang trạng thái “Sẵn Sàng”
  • Chơi
  • Kết quả sẽ được tính trên Backend

Features có thể làm

  • Chatbox giữa 2 người chơi
  • Chặn 2 đầu thì ko dc thắng
  • Kick người chơi
  • Bảng xếp hạng (ngày, tuần, tháng, năm)
  • Lịch sử thi đấu
  • Lịch sử từng nước đi
  • Time limit (nếu sau x seconds mà ko đi thì mặc định thua)

Improvement có thể thêm

  • Tạo ra các reusable components (button, avatar,…)

Learning notes

Dành cho các bạn quan tâm học hỏi để tiếp thu thêm kiến thức + kinh nghiệm thực chiến với Laravel.

Tests

Tests là phần không thể thiếu trong các backend apps hiện nay. Project này cũng vậy.

Để học cách viết tests, hãy tham khảo thư mục tests

Project này bao gồm: Unit Tests và Feature Tests.

Note: cái quan trọng nhất là Logic Caro, dc test covered 100% 😎

Continuous Integration / CI

Project này sử dụng GitHub Actions để chạy Continuous Integration (CI) process. Tham khảo thư mục .github/workflows để tìm hiểu thêm.

Workflow cơ bản:

  • Pull project
  • Setup dependencies
  • Setup ENV
  • Chạy tests
  • Hoàn tất

Login with Google

Thay vì sử dụng Socialite của Laravel, mình viết 1 cái service đơn giản để login với Google.

Về cơ bản thì nó đơn giản, 2 external APIs call và hết. Không cần phải cài thêm package cho mệt.

Auth Token stored in HTTPOnly Cookie

Đúng vậy, khi ta stores Auth Token ở HTTPOnly Cookie, có thể ensure 100% là client không lấy + chỉnh sửa được.

Điều này khiến app của bạn dc secured hơn, mấy cái browser’s extensions cũng ko thể lấy dc token

  • Nếu bạn lưu trong localStorage/sessionStorage thì có thể.

Tất nhiên là cái gì cũng có trade-offs nhưng mình cảm thấy approach này phù hợp cho Laravel Caro app.

Download Category ,
Product Version
File Type PHP
File Size 415 KB
Developer
Documentation

Release Information

  • Released
    :

    August 22, 2024

  • Last Updated
    :

    August 22, 2024

  • Categories
    :
  • File Included
    :

    PHP

  • File Size
    :

    415 KB

Share Your Valuable Opinions

You must log in to submit a review.

  • Sign up
Password Strength Very Weak
Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.
We do not share your personal details with anyone.

Please wait a moment...

(Don't refresh or go back)