🔥 آموزش Broadcasting توی لاراول (با مثال) 🔥رفقا، امروز میخوایم بریم سراغ یه قابلیت خف ن تو لاراول به اسم Broadcasting! با این قابلیت میتونین یهسری رویدادها رو زنده (real-time) برای کاربرهاتون بفرستین. یعنی مثلاً تو چت آنلاین، اعلانهای لحظهای یا هر چیز دیگه که لازمه سریع به کاربر برسه، این خیلی کارآمده.
😎خب بریم ببینیم چجوری میتونیم این کار رو انجام بدیم!
👇قبل از هرچیزی باید Broadcasting رو تو پروژهتون راه بندازین. توی فایل .env، بیاین و Broadcasting رو روی سرویس Pusher تنظیم کنیم. البته میتونین Redis یا
Socket.io هم استفاده کنین، ولی اینجا با Pusher میریم جلو.
💻تو فایل .env اینا رو اضافه کنین:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_CLUSTER=mt1
بعدش باید کتابخونه pusher رو نصب کنین:
composer require pusher/pusher-php-server
حالا میریم سراغ تنظیمات بیشتر!
بعد از تنظیمات اولیه، باید یه سری کانفیگ توی فایل config/broadcasting.php انجام بدیم. تو این فایل، Pusher رو به عنوان درایور انتخاب کنید:
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
],
حالا وقتشه یه ایونت درست کنیم! با دستور زیر یه ایونت به اسم MessageSent میسازیم:
php artisan make:event MessageSent
این دستور یه کلاس توی پوشه app/Events میسازه. حالا بیاین تو این فایل کد زیر رو اضافه کنیم:
class MessageSent implements ShouldBroadcast
{
public $message;
public function __construct($message)
{
$this->message = $message;
}
public function broadcastOn()
{
return new Channel('chat');
}
}
تو این مثال، وقتی یه پیغام ارسال میشه، ما این ایونت رو برای کانال chat broadcast میکنیم.
✉️حالا باید توی کدی که داریم، ایونت رو بفرستیم. مثلاً توی کنترلر:
event(new MessageSent('سلام! این یه پیام لایو از طرف علیرضا هست'));
این کد باعث میشه که پیغام به صورت real-time بره برای کسایی که تو کانال chat عضو هستن.
💬برای اینکه از طرف کاربرها پیامها رو دریافت کنیم، باید توی سمت فرانت هم یه سری تنظیمات انجام بدیم. اگه از Vue.js یا React استفاده میکنین، میتونین از Laravel Echo استفاده کنین که کدتون رو خیلی راحتتر و تمیزتر میکنه.
اول laravel-echo و pusher-js رو نصب کنین:
npm install --save laravel-echo pusher-js
بعد توی فایل جاوااسکریپتتون، چیزی مثل این رو تنظیم کنین:
import Echo from "laravel-echo";
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true
});
window.Echo.channel('chat')
.listen('MessageSent', (e) => {
console.log(e.message);
});
به همین راحتی! وقتی پیامی ارسال بشه، شما اون رو از طریق جاوااسکریپت توی مرورگر میگیرید و میتونید هر کاری که میخواید باهاش انجام بدید!
😍خلاصه اگه یه اپلیکیشن دارین که نیاز به رویدادهای زنده داره، Broadcasting تو لاراول میتونه بهترین راهحل باشه. با استفاده از Pusher و Laravel Echo، کارتون خیلی سریع و تمیز انجام میشه.
سوالی داشتین تو کامنتها بپرسین!
😁🔥⚡️ کانال آموزشی LaravelHub
@LaravelHub