omid.sandi
2 سال پیش توسط omid.sandi مطرح شد
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


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 2 سال پیش آپدیت شد
0

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

return auth()->$user();

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

return $user;

or

 return auth()->user();

omid.sandi
تخصص : برنامه نویس و طراح سایت
@omid.sandi79 2 سال پیش آپدیت شد
0

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

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

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

سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 2 سال پیش آپدیت شد
1

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

App\Providers\BroadcastServiceProvider::class

omid.sandi
تخصص : برنامه نویس و طراح سایت
@omid.sandi79 2 سال پیش مطرح شد
0

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


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 2 سال پیش آپدیت شد
0

فایل 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.sandi79 2 سال پیش مطرح شد
omid.sandi
تخصص : برنامه نویس و طراح سایت
@omid.sandi79 2 سال پیش مطرح شد
0

@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
@rahneshin.amir 2 سال پیش آپدیت شد
0

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


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

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