راکت

کار نکردن لاراول وب سوکت

8 پاسخ

سلام
من میخام از وب سوکت لاراول استفاده کنم
طبق داکیومنت 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

omid.sandi
omid.sandi
@omid.sandi79
ثبت پرسش جدید

پاسخ‌ها

8
سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

این خط رو اصلاح کن

return auth()->$user();

اون $user رو بذار فقط ریترن کنه یا auth()->user() رو اگر میدونی برگردون

return $user;

or

 return auth()->user();
omid.sandi
omid.sandi
@omid.sandi79

تخصص: برنامه نویس و طراح سایت

@juza66
انجام دادم ولی متاسفانه درست نشد
اصلا dd هم اجرا نمیشه داخل این تابع

Broadcast::channel('message-sent', function ($user) {

    dd('omid');
    return auth()->user();
});

شاید پاسخ شما همین‌جا باشد

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

برو توی این مسیر config/app.php
این خط رو از حالت کامنت در بیار تا Broadcast رو توی پروژه داشته باشی

App\Providers\BroadcastServiceProvider::class
omid.sandi
omid.sandi
@omid.sandi79

تخصص: برنامه نویس و طراح سایت

@juza66
این کار رو هم از قبل انجام داده بودم

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

فایل 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 رو انجام دادی؟؟

omid.sandi
omid.sandi
@omid.sandi79

تخصص: برنامه نویس و طراح سایت

omid.sandi
omid.sandi
@omid.sandi79

تخصص: برنامه نویس و طراح سایت

@juza66

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,
});
Amir
Amir
@rahneshin.amir

سلام دوستان
منم همچین مشکلی رو داشتم
ShouldBroadcast رو به ShouldBroadcastNow تغییر بدید
امیدوارم مشکلتون حل شه

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام