سلام
من میخام از وب سوکت لاراول استفاده کنم
طبق داکیومنت https://beyondco.de/docs/laravel-websockets/getting-started/introduction پیش رفتم
توی داکیومنت گفته باید pusher ورژن 3 نصب بشه
ولی pusher ورژن3 روی php ورژن 8 نصب نمیشه ورژن 5 رو نصب کردم
تمامی کانفیگ ها رو هم طبق داکیومنت انجام دادم
و وب سوکت رو ران کردم
با این کد ایونت مورد نظر رو فراخوانی کردم :
broadcast(new MessageSent())->toOthers();
این فایل ایونت MessageSent :
class MessageSent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('message-sent');
}
}
این هم فایل channels.php داخل پوشه routes
Broadcast::channel('message-sent', function ($user) {
return auth()->$user();
});
وقتی ایونت مورد نظر رو فراخوانی میکنم اجرا میشه و وارد تابع broadcastOn میشه ولی کد زیر کار نمیکنه :
return new PrivateChannel('message-sent');
میشه راهنمایی کنید لطفا ؟!
@hesammousavi
این خط رو اصلاح کن
return auth()->$user();
اون $user رو بذار فقط ریترن کنه یا auth()->user() رو اگر میدونی برگردون
return $user;
or
return auth()->user();
@juza66
انجام دادم ولی متاسفانه درست نشد
اصلا dd هم اجرا نمیشه داخل این تابع
Broadcast::channel('message-sent', function ($user) {
dd('omid');
return auth()->user();
});
برو توی این مسیر config/app.php
این خط رو از حالت کامنت در بیار تا Broadcast رو توی پروژه داشته باشی
App\Providers\BroadcastServiceProvider::class
فایل pusher و laravel echo رو توی فایل 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
});
تنظیمات رو توی فایل کانفیگ برداکست توی پوشه app رو انجام دادی؟؟
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
wsHost: window.location.hostname,
wsPort: 6001,
forceTLS: false,
disableStats: false,
});
سلام دوستان
منم همچین مشکلی رو داشتم
ShouldBroadcast رو به ShouldBroadcastNow تغییر بدید
امیدوارم مشکلتون حل شه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟