Laravel 5.7 Echo не работает на localhost, я использую vue.js - PullRequest
0 голосов
/ 14 февраля 2019

Привет, я использую службы толкания и эхо-сообщений Laravel в своем проекте, когда я отправляю сообщение, сообщение транслируется и отображается в puhser в консоли, но не отображается на другом экране входа в режиме реального времени, не работает. Это мой класс сообщений

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Events\NewMessage;


class Message extends Model
{

    protected $dispatchesEvents = [
    'created' => NewMessage::class
];

     protected $fillable = [
        'from', 'to', 'text'
    ];
}

Это мой канал

Broadcast::channel('messages.{id}', function ($user, $id) {

    return $user->id === (int) $id;
});

Это мой контроллер

 public function sendmessage(Request $request)
    {
        $message=Message::create([
            'from'=>Auth::user()->id,
            'to'=>$request->contact_id,
            'text'=>$request->text,
        ]);

    return response()->json($message);

    }

Это мое событие

<?php

namespace App\Events;
use App\Message;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

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

    public $message;

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

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()

    {
        // dd($this->message->to);
        return new PrivateChannel('messages.'.$this->message->to);
    }
    public function broadcastWith()
    {
           return ["message" => $this->message];
    }
}

это мой компонент

 mounted() {

         Echo.private(`messages.${this.user.id}`)
                .listen('NewMessage', (e) => {
                console.log(e);
                    this.hanleIncoming(e.message);
                });
            console.log('Component mounted.')
            axios.get('/getContacts').then((response)=>{
                this.contacts=response.data;
                console.log(this.contacts);
            });
        },
...