محسن بستان
4 سال پیش توسط محسن بستان مطرح شد
9 پاسخ

مشکل در laravel echo و pusher

سلام دوستان.
قبل از هر چیزی عذرخواهی میکنم بابت اینکه برای دومین بار هستش که این تاپیک رو ایجاد میکنم چون هیج جوابی پیدا نکردم مجبور شدم.
کل اینترنت رو گشتم و به جواب نرسیدم امیدوارم شما بتونید کمک کنید.
من با استفاده 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


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

درود

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

BROADCAST_DRIVER=pusher

محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

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


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

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


TEFO
تخصص : لاراول
@tefo.ha27 4 سال پیش مطرح شد
0

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


امیرحسن غفوری تبار
تخصص : ‌fullStackDeveloper
@amirhasanghafori.tabar 3 سال پیش مطرح شد
0

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


sinaQ
تخصص : magican
@sinaQasemi 3 سال پیش مطرح شد
0

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


امیرحسن غفوری تبار
تخصص : ‌fullStackDeveloper
@amirhasanghafori.tabar 3 سال پیش مطرح شد
0

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


sinaQ
تخصص : magican
@sinaQasemi 3 سال پیش آپدیت شد
-1

@amirhasanghafori.tabar

php artisan queue:work

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

BROADCASTDRIVER=log

در .env رو به

BROADCASTDRIVER=pusher

تغییر دادید؟


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

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