Laravel Эхо не слушает - PullRequest
       87

Laravel Эхо не слушает

5 голосов
/ 07 мая 2020

Я настроил событие и новый канал:

class TaskCreated implements shouldBroadcast
 {
use Dispatchable, InteractsWithSockets, SerializesModels;
public $task;

public function __construct(Task $task)
{
    $this->task = $task;
}

}

, установил Echo и настроил его

 import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'pusher-key',
    cluster: 'ap2',
    encrypted: true
});

затем я вызываю событие TaskCreated, когда задача размещена

event(new TaskCreated($task));

Однако проблема в том, что Echo не слушает журналы pusher или НИЧЕГО. хотя в laravel -websockets событие было создано как api-сообщение.

вот vue js Реализация эха:

 mounted () {
        axios.get('/tasks').then(response => (this.tasks = response.data));

       Echo.channel('taskCreated').listen('TaskCreated', (e) => {
            console.log(e);
            this.tasks.push(task.body)
        });

в дашборде:

api-message Channel: taskCreated, Event: App\Events\TaskCreated 19:01:55

ОБНОВЛЕНИЕ

Теперь, когда я пытался подключиться к WS, состояние подключения ожидает в течение 10 секунд, затем завершается с ошибкой, WebSocket закрывается до того, как соединение установлено. И Ошибка при установлении соединения: net :: ERR_CERT_AUTHORITY_INVALID.

URL-адрес запроса: wss: //127.0.0.1/app/local? Protocol = 7 & client = js & version = 6.0.2 & flash = false

import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
 key: process.env.MIX_PUSHER_APP_KEY,
 wsHost: window.location.hostname,
 wssPort: 6001,
 disableStats: true,
 enabledTransports: ['ws', 'wss']

Ответы [ 5 ]

3 голосов
/ 10 мая 2020
• 1000 1005 *
Echo.channel('taskCreated').listen('.task.created', (e) => {
            this.tasks.push(task.body)
        });

дополнительная информация: https://laravel.com/docs/broadcasting но около laravel -websockets, я использую его недавно, и у меня аналогичная проблема, и проверьте их репозиторий на github, оказалось, что у них есть некоторые открытые проблемы для этой ошибки что они не исправили. я люблю spat ie пакеты, но для этого tlaverdure / laravel -echo-server - мой первый выбор, и с ним легче работать.

2 голосов
/ 09 мая 2020

для всех, после многих попыток вот что я обнаружил ... вы ДОЛЖНЫ иметь учетные данные pusher, установленные в вашем env. и трансляция. js. Я много пробовал с Laravel 7, чтобы установить его без учетных данных (не повезло), иначе многие проблемы от Google Chrome и сетевых запросов взорвутся. это для меня и, надеюсь, сработает для вас

0 голосов
/ 16 мая 2020

Может быть, вы можете попробовать:

В вашем TaskCreated событии:

public function broadcastOn()
{
   return new Channel('task.created');     
}

и в вашем Vue:

Echo.channel('task.created').listen('TaskCreated', (e) => {
            this.tasks.push(task.body)
        });
0 голосов
/ 15 мая 2020

net :: ERR_CERT_AUTHORITY_INVALID.

URL-адрес запроса: wss: //127.0.0.1/app/local? Protocol = 7 & client = js & version = 6.0.2 & flash = false

Возможно, у вас проблема с сертификатом ssl . Вы используете wss , который подключается только к https . Вы должны проверить свой ssl-сертификат или использовать вместо него ws .

Плюс совет:

Я бы использовал комбинацию socket.io + redis вместо pusher.

0 голосов
/ 07 мая 2020

Как сказал Кабельбаан, удалите точку, но go в консоли отладки и просто обновите sh свое приложение, чтобы начать с него. Вы должны увидеть подключение и подписку на канал ваших задач. Если вы этого не сделаете, вы можете начать отладку соединения, а не отправлять отправку события. Кроме того, я понимаю, что копирование и вставка просто неполные, но ваш оператор window.Echo неполный.

...