Paradox
2 سال پیش توسط Paradox مطرح شد
2 پاسخ

چت همزمان در لاراول

سلام وقت بخیر
من برای چت همزمان در لاراول از پکیج های زیر استفاده کردم

composer require pusher/pusher-php-server
npm install --save-dev laravel-echo pusher-js

و از event استفاده کردم
حالا مشکلم اینه در لحظه چت نمایش نمیده باید رفرش بشه صفحه
با لاراول و لایو وایر انجام دادم
و واقعیت زیاد با لایو وایر اشنایی ندارم
نمیدونم مشکل از ایونت هست یا کدهای مربوط به لایو وایر

کدهای مربوط به event

class MessageSent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $user;
    public $message;
    public $conversation;
    public $receiver;

    public function __construct(User $user ,Message $message ,Conversation $conversation ,User $receiver)
    {
        $this->user = $user;
        $this->message = $message;
        $this->conversation = $conversation;
        $this->receiver = $receiver;
    }

    public function broadcastWith()
    {
        return [
            'user_id' => $this->user->id,
            'message' => $this->message->id,
            'conversation_id' => $this->conversation->id,
            'receiver_id' => $this->receiver->id,
        ];
    }
    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        error_log($this->user);
        error_log($this->receiver);
        return new PrivateChannel('chat.' .$this->receiver->id);
    }
}

livewire
اینجا وقتی dd گرفتم بدون رفرش باید جواب میداد ولی هیچ چیزی نشون نداد

    public function broadcastedMessageReceived($event)
    {
        // dd($event);
        $this->emitTo('chat.chat-list' , 'refresh');

        $broadcastedMessage = Message::find($event['message']);

        if($this->selectedConversation)
        {
            if((int) $this->selectedConversation->id === (int)$event['conversation_id'])
            {
                $broadcastedMessage->read = 1;
                $broadcastedMessage->save();
                $this->pushMessage($broadcastedMessage->id);

                $this->emitSelf('broadcastMessageRead');
            }
        }
    }

حالا مطمئن نیستم باز مشکل از اینجا باشه


ثبت پرسش جدید
Paradox
تخصص : در حال یادگیری
@paradox 2 سال پیش آپدیت شد
0

کسی دلیل این مشکلو میدونه ؟
تو ترمینال این خطا ابتدای اطلاعات کاربری که پیغام ارسال یا دریافت میکنه میاد

   WARN  {"id":2,"phone":"09432086304","is_superuser":0,"is_staff":0,"status":1,"reagent_code":null,"image":"2_1677841440.png","name_child":"\u0627\u0645\u06cc\u0631","age":1,"gender":"boy","birth":"1401-12-02","last_login_at":"2023-03-24 14:48:03","last_login_ip":"127.0.0.1",""created_at":"2023-03-03T11:02:15.000000Z","updated_at":"2023-03-24T10:18:03.000000Z"}.

برودکست مشکل داره از این قسمت ارور برمیگردونه اطلاعات کامل کد بالاتر ارسال کردم اگه کسی میدونه ممنون میشم راهنمایی کنه

    public function broadcastOn()
    {
        error_log($this->user);
        error_log($this->receiver);
        return new PrivateChannel('chat.' .$this->receiver->id);
    }

Paradox
تخصص : در حال یادگیری
@paradox 2 سال پیش آپدیت شد
0

بخاطر کد اسکریپت بود مشکلم حل شد


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

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