Laravel 与第三方 Pusher 的客户支持聊天

Laravel customer support chat with third party Pusher

我正在尝试通过 laravelPusher 创建客户 支持图表 ,但在我的控制台中,出现了一些错误。我无法理解。

这里是控制台:

并且,

这是我在Js文件

中的内容

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

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.d8649589aa930d275ffe,
    cluster: process.env.ap2,
    encrypted: true
});

Create Event Abstract class

namespace App\Events;

use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Queue\SerializesModels;

abstract class Event implements ShouldBroadcast
{
    use SerializesModels;

    protected $message;
    protected $channels = [];
    protected $event = '';

    /**
     * Get the channels the event should be broadcast on.
     *
     * @return array
     */
    public function broadcastOn()
    {
        return $this->channels;
    }

    /**
     * Broadcast to event
     */
    public function broadcastAs()
    {
        return $this->event;
    }

    /**
     * Broadcast with message
     */
    public function broadcastWith()
    {
        return  $this->message;
    }
}

Now Create PusherEvent Class

namespace App\Events;

class PusherEvent extends Event
{

    /**
     * Create a new event instance.
     * @param $message
     * @return $this
     */
    public function setMessage($message)
    {
        $this->message = $message;
        return $this;
    }

    /**
     * Set pusher channels
     */
    public function setChannels($channels)
    {
        $this->channels = $channels;
        return $this;
    }

    /**
     * Set pusher event
     */
    public function setEvent($event)
    {
        $this->event = $event;
        return $this;
    }
}

Now Broadcast from anywhere at Laravel Side like this

    try {
            $messageEvent = new PusherEvent();
            $messageEvent->setEvent('chatMessage')
                        ->setChannels(['customerChat']);
            $params['message'] = "Hello From Laravel";
            event($messageEvent->setMessage($params));
        } catch (\Exception $e) {
            customLog($e->getMessage());
            return false;
        }

调用此代码后,您可以查看推送器控制台。你会得到"Hello From Laravel"

这是一个工作代码。我在我的项目中使用过。希望对你有帮助。

For listing from js

import Echo from "laravel-echo"

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

Echo.channel('customerChat')
    .listen('chatMessage', (e) => {
        console.log(e.message);
    });

详情https://laravel.com/docs/5.6/broadcasting#concept-overview