Laravel Reverb ব্যবহার করলে Laravel application-এ live notification, chat system, real-time dashboard, order update বা broadcasting feature সহজে তৈরি করা যায়। কিন্তু local server-এ ঠিকভাবে কাজ করলেও live server, VPS বা aaPanel-এ deploy করার পর অনেক সময় browser console-এ WebSocket connection failed error দেখা যায়।
এই error দেখে অনেকেই মনে করেন Laravel code-এ সমস্যা আছে। কিন্তু বেশিরভাগ সময় এটি code-এর সমস্যা নয়। সাধারণত .env configuration ভুল, Reverb server চালু না থাকা, Nginx WebSocket reverse proxy missing, HTTPS/SSL mismatch, cache issue অথবা Supervisor setup না থাকার কারণে এই সমস্যা হয়।
WebSocket connection failed error কেমন দেখায়?
Browser console-এ সাধারণত এই ধরনের error দেখা যায়:
WebSocket connection to 'wss://yourdomain.com/app/your_app_key?protocol=7&client=js&version=8.5.0&flash=false' failed এর মানে browser আপনার domain দিয়ে WebSocket connection করার চেষ্টা করছে, কিন্তু সেই request Reverb server পর্যন্ত পৌঁছাচ্ছে না অথবা Reverb server response দিচ্ছে না।
এই সমস্যা কেন হয়?
- Nginx config-এ /app এবং /apps WebSocket proxy নেই।
- Reverb server চালু নেই।
- REVERB_PORT এবং REVERB_SERVER_PORT mismatch আছে।
- VITE_REVERB_HOST ভুল domain দেওয়া আছে।
- HTTPS website-এ VITE_REVERB_SCHEME=http দেওয়া আছে।
- .env change করার পর Laravel cache clear করা হয়নি।
- VITE variable change করার পর npm run build দেওয়া হয়নি।
- Supervisor দিয়ে Reverb permanent run করা হয়নি।
Step 1: Laravel Reverb .env configuration ঠিক করুন
প্রথমে আপনার Laravel project-এর .env file খুলুন। aaPanel server হলে project path সাধারণত এই ধরনের হয়:
cd /www/wwwroot/your-project/public/core তারপর .env file-এ Reverb configuration নিচের মতো রাখুন। এখানে yourdomain.com এর জায়গায় আপনার actual domain বসাবেন।
BROADCAST_CONNECTION=reverb REVERB_APP_ID=local REVERB_APP_KEY=local REVERB_APP_SECRET=local REVERB_SERVER_HOST=0.0.0.0 REVERB_SERVER_PORT=8080 REVERB_HOST=127.0.0.1 REVERB_PORT=8080 REVERB_SCHEME=http VITE_REVERB_APP_KEY="${REVERB_APP_KEY}" VITE_REVERB_HOST=yourdomain.com VITE_REVERB_PORT=443 VITE_REVERB_SCHEME=https এখানে সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো REVERB_SERVER_PORT এবং REVERB_PORT একই রাখা। যদি এক জায়গায় 8080 আর অন্য জায়গায় 8085 থাকে, তাহলে Laravel backend এক port-এ broadcast পাঠাবে, কিন্তু Reverb server অন্য port-এ চলবে। তখন live connection fail করবে।
Step 2: .env change করার পর cache clear করুন
Laravel অনেক সময় configuration cache করে রাখে। তাই .env change করার পর cache clear না করলে পুরোনো setting দিয়েই application চলতে পারে।
cd /www/wwwroot/your-project/public/core php artisan optimize:clear php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear তারপর Reverb restart করুন:
php artisan reverb:restart Step 3: VITE variable change করলে npm run build দিন
VITE_REVERB_HOST, VITE_REVERB_PORT এবং VITE_REVERB_SCHEME frontend JavaScript-এর ভিতরে build হয়ে যায়। তাই এই value change করলে অবশ্যই আবার build দিতে হবে।
cd /www/wwwroot/your-project/public/core npm run build অনেক সময় .env ঠিক করার পরও browser console-এ পুরোনো domain বা port দেখা যায়। এর কারণ হলো নতুন frontend build দেওয়া হয়নি।
Step 4: Nginx WebSocket reverse proxy add করুন
Live server-এ browser এই ধরনের request পাঠায়:
wss://yourdomain.com/app/your_app_key Nginx-কে এই request internal Reverb server-এ পাঠাতে হবে:
http://127.0.0.1:8080 aaPanel থেকে আপনার website-এর Nginx config খুলুন। তারপর server { } block-এর ভিতরে নিচের configuration add করুন:
location /app { proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header SERVER_PORT $server_port; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass http://127.0.0.1:8080; } location /apps { proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header SERVER_PORT $server_port; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass http://127.0.0.1:8080; } এই config না থাকলে browser-এর WebSocket request Reverb server পর্যন্ত পৌঁছাবে না। ফলে connection failed error আসবে।
Step 5: Nginx config test এবং reload করুন
Nginx config edit করার পর সরাসরি restart না দিয়ে আগে syntax test করুন। এতে ভুল থাকলে website down হওয়ার আগে বুঝতে পারবেন।
nginx -t যদি output-এ syntax is ok এবং test is successful দেখা যায়, তাহলে reload করুন:
systemctl reload nginx aaPanel ব্যবহার করলে dashboard থেকেও Nginx restart করা যায়। তবে command দিয়ে test করা safe।
Step 6: Reverb server চালু আছে কিনা check করুন
সব config ঠিক থাকলেও Reverb server বন্ধ থাকলে WebSocket connect হবে না। আগে check করুন 8080 port listening করছে কিনা:
ss -ltnp | grep 8080 যদি কোনো output না আসে, তাহলে Reverb server চালু নেই। test করার জন্য manually start করুন:
cd /www/wwwroot/your-project/public/core php artisan reverb:start --host=0.0.0.0 --port=8080 --debug এই command চালু রেখে website refresh করুন এবং browser console check করুন। যদি WebSocket error চলে যায়, তাহলে Reverb ঠিকভাবে কাজ করছে।
Step 7: Supervisor দিয়ে Reverb permanent run করুন
Manual command দিয়ে Reverb চালালে SSH terminal বন্ধ হলে Reverb server বন্ধ হয়ে যাবে। Production server-এ Reverb সবসময় চালু রাখতে Supervisor ব্যবহার করতে হবে।
aaPanel Supervisor-এ new process তৈরি করে command হিসেবে দিন:
php /www/wwwroot/your-project/public/core/artisan reverb:start --host=0.0.0.0 --port=8080 Project directory দিন:
/www/wwwroot/your-project/public/core Auto start enable করুন। এতে server reboot হলেও Reverb আবার চালু হবে।
Step 8: WebSocket connect হয় কিন্তু event আসে না?
যদি WebSocket connect হয় কিন্তু live notification বা event না আসে, তাহলে queue worker বন্ধ থাকতে পারে। কিছু Laravel broadcasting event queue ব্যবহার করে।
cd /www/wwwroot/your-project/public/core php artisan queue:work Production server-এ queue worker-ও Supervisor দিয়ে চালানো ভালো। Supervisor command হতে পারে:
php /www/wwwroot/your-project/public/core/artisan queue:work --sleep=3 --tries=3 --timeout=90 Final checklist
- .env file-এ REVERB_PORT এবং REVERB_SERVER_PORT একই আছে।
- VITE_REVERB_HOST live domain দেওয়া আছে।
- HTTPS website হলে VITE_REVERB_SCHEME=https দেওয়া আছে।
- .env change করার পর Laravel cache clear করা হয়েছে।
- VITE variable change করার পর npm run build দেওয়া হয়েছে।
- Nginx config-এ /app এবং /apps reverse proxy আছে।
- Reverb server 8080 port-এ running আছে।
- Supervisor দিয়ে Reverb permanent run হচ্ছে।
- Queue worker প্রয়োজন হলে চালু আছে।
শেষ কথা
Laravel Reverb WebSocket connection failed error সাধারণত Laravel code-এর সমস্যা নয়। বেশিরভাগ সময় এটি server configuration, Nginx proxy, Reverb port, SSL setting, cache অথবা Supervisor issue-এর কারণে হয়।
সমাধানের জন্য প্রথমে .env ঠিক করুন, cache clear করুন, frontend rebuild করুন, Nginx WebSocket proxy add করুন, Reverb server start করুন এবং production server-এ Supervisor দিয়ে permanent run করুন। এই stepগুলো follow করলে aaPanel, Nginx এবং VPS server-এ Laravel Reverb WebSocket connection failed সমস্যা সহজেই solve করা যায়।
RoyelHost Laravel, VPS, cloud hosting এবং business website hosting solution provide করে। Laravel Reverb, WebSocket, queue worker বা real-time application চালানোর জন্য ভালো server environment দরকার। তাই production project deploy করার আগে hosting server, SSL, Nginx configuration এবং resource support ভালোভাবে check করা জরুরি।






No comments yet. Be the first to comment.