راکت

مشکل در laravel echo و pusher

9 پاسخ

سلام دوستان.
قبل از هر چیزی عذرخواهی میکنم بابت اینکه برای دومین بار هستش که این تاپیک رو ایجاد میکنم چون هیج جوابی پیدا نکردم مجبور شدم.
کل اینترنت رو گشتم و به جواب نرسیدم امیدوارم شما بتونید کمک کنید.
من با استفاده pusher نوتیفیکیشن هام رو ارسال میکنم ( از ایونت استفاده نمیکنم ، از خود notifications استفاده میکنم ) و کد فایلش هم به صورت زیر هستش :

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\BroadcastMessage;
use Illuminate\Notifications\Notification;

class videoProcessStatus extends Notification
{
    use Queueable;

    public $message;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($message)
    {
        $this->message = $message;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['database','broadcast'];
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            "status" => $this->message['status'],
            "message" => $this->message['message']
        ];
    }

    /**
     * Get the broadcastable representation of the notification.
     *
     * @param  mixed $notifiable
     * @return BroadcastMessage
     */
    public function toBroadcast($notifiable)
    {
        return new BroadcastMessage([
            "status" => $this->message['status'],
            "message" => $this->message['message']
        ]);
    }
}

و در یکجایی با استفاده از کد زیر نوتیفیکیشن رو ارسال میکنم که به درستی هم ارسال میشه یعنی توی دیتابیس و هم توی pusher دریافت میشه.

$user = User::find(1);
        Notification::send($user, new videoProcessStatus($message));

توی pusher به صورت زیر دریافت میشه :

API MESSAGE
Channel: private-users.1, Event: Illuminate\Notifications\Events\BroadcastNotificationCreated

{
  "status": "success",
  "message": " ویدیو تست با موفقیت در کیفیت 10 پردازش شد!",
  "id": "93abf28d-49ef-4490-8aed-626b283fc794",
  "type": "App\\Notifications\\videoProcessStatus"
}

حالا مشکل اینجاست که دیگه این پیام توی سایت خودم نمایش داده نمیشه. منظور از puhser هیچی دریافت نمیکنه.
کدی هم که با laravel echo نوشتم به صورت زیر هستش :

import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'MY_Code',
    cluster: 'ap2',
    forceTLS: true
});

Echo.private('App.User.1')
    .notification(function (event) {
        console.log(event);
    });

جالب اینجاست که وقتی از Pusher.logToConsole = true; استفاده میکنم توی کنسول پیام زیر رو نشون میده :

Pusher : No callbacks on private-App.User.1 for pusher:subscription_error

دوستان امیدوارم که توضیحات کامل بوده باشه لطفا کمک کنید :(

@hesammousavi
@ali.bayat
@Alimotreb

ثبت پرسش جدید

پاسخ‌ها

9
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

درود

BROADCAST_DRIVER رو داخل فایل env درست تنظیم کردید؟

BROADCAST_DRIVER=pusher
محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

پیوند زیر رو بررسی کنید
https://github.com/laravel/echo/issues/55

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@ali.bayat
به نتیجه ای نرسیدم :(

TEFO
TEFO
@tefo.ha27

تخصص: لاراول

به جای toArray بنویسین toDatabase

امیرحسن غفوری تبار
امیرحسن غفوری تبار
@amirhasanghafori.tabar

تخصص: ‌fullStackDeveloper

سلام منم به این مشکل بر خوردم آیا مشکلتون برطرف شد؟
من امتحان کردم زمانی که از laravel echo استفاده می کنم هیچ خروجی از pusher دریافت نمی کنیم ولی وقتی از javascript استفاده می کنم به درستی کار می کنه

sinaQ
sinaQ
@sinaQasemi

تخصص: magican

@amirhasanghafori.tabar
هندشیک به درستی اعمال میشه ؟
زمانی که صفحه لود شد توی debug console پنل پوشر اتصالتون رو نمایش میده؟

امیرحسن غفوری تبار
امیرحسن غفوری تبار
@amirhasanghafori.tabar

تخصص: ‌fullStackDeveloper

@sinaQasemi
بله نمایش داده میشه و اتصال میشکلی نداره

sinaQ
sinaQ
@sinaQasemi

تخصص: magican

@amirhasanghafori.tabar

php artisan queue:work

رو امتحان کردید؟

BROADCASTDRIVER=log

در .env رو به

BROADCASTDRIVER=pusher

تغییر دادید؟

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

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