Laravel + Echo + Socket.io — Не получает трансляцию

Итак, я настроил Redis, Socket.io и Laravel Echo.

Это мой .env:

BROADCAST_DRIVER=redis
QUEUE_DRIVER=redis

REDIS_HOST=acl.test
REDIS_PASSWORD=null
REDIS_PORT=3001

Я создал событие под названием CreatedEcall:

class CreatedEcall implements ShouldBroadcast
{
use InteractsWithSockets, SerializesModels;

public $data;

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

/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new Channel('testChannel');
}

public function broadcastAs()
{
return 'ecall.created';
}
}

Сервер Socket.io работает на порту 6001 с использованием следующего кода:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var Redis = require('ioredis');
var redis = new Redis();
redis.subscribe('testChannel', function(err, count) {
});
redis.on('message', function(channel, message) {
console.log('Message received: ' + message);
message = JSON.parse(message);
io.emit(channel + ':' + message.event, message.data);
});
http.listen(6001, function(){
console.log('Listening on Port 6001');
});

Кроме того, сервер Redis работает на порту 3001.

26696:M 24 Apr 12:28:59.473 * Ready to accept connections

Теперь я построил простой маршрут, который запускает событие, используя event(new \App\Events\CreatedEcall());

При запуске работника очереди (redis) с помощью php artisan queue:work событие получено правильно [2018-04-24 14:29:19] Processed: Illuminate\Broadcasting\BroadcastEvent но мой веб-сокет ничего не выводит на консоль и, по-видимому, в соответствии с инструментами Chrome Dev веб-сокет ничего не делает, кроме как инициирует код состояния 101 (протоколы переключения).

введите описание изображения здесь

Я включил поставщика услуг, раскомментировав App\Providers\BroadcastServiceProvider::class, в файле config / app.php.

Это мой эхо-файл Javascript:

import Echo from "laravel-echo"
if (typeof io !== 'undefined') {
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001'
});

window.Echo.channel('testChannel')
.listen('.ecall.created', (e) => {
console.log(e);
});
}

Что я упускаю или делаю неправильно?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]