@andreysuha
Что то знаю

Почему laraver-echo-server не возвращает событие в браузер?

Пытаюсь сделать real-time chat. Установил redis и laravel-echo-server.
Вот конфиги echo server
{
	"authHost": "http://hobby.website.local",
	"authEndpoint": "/broadcasting/auth",
	"clients": [
		{
			"appId": "id",
			"key": "key"
		}
	],
	"database": "redis",
	"databaseConfig": {
        "redis": {
            "host": "127.0.0.1",
            "port": "6379",
            "db": 0
        },
		"sqlite": {
			"databasePath": "/database/laravel-echo-server.sqlite"
		}
	},
	"devMode": true,
	"host": "hobby.website.local",
	"port": "6001",
	"protocol": "http",
	"socketio": {},
	"secureOptions": 67108864,
	"sslCertPath": "",
	"sslKeyPath": "",
	"sslCertChainPath": "",
	"sslPassphrase": "",
	"subscribers": {
		"http": true,
		"redis": true
	},
	"apiOriginAllow": {
		"allowCors": false,
		"allowOrigin": "",
		"allowMethods": "",
		"allowHeaders": ""
	}

далее установил horizon для обработки очереди, указал обработчик очередей redis в .env и BROADCAST_DRIVER в redis.

Cоздал событие
class MessageToPrivateTree implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    private $treeId;
    public $msg;

    public function __construct(Int $treeId, $msg) {
        $this->treeId = $treeId;
        $this->msg = $msg;
    }

    public function broadcastOn()
    {
        return new PresenceChannel('chat.private.' . $this->treeId);
    }
}

и слушаю его таким образом

this.treeChannel = Socket.join(`chat.private.${chat.id}`);
this.treeChannel.here((users) => dl.log("users in chat:", users));
this.treeChannel.joining((user) => dl.log("New user join:", user));
this.treeChannel.leaving((user) => dl.log("User leave:", user));
this.treeChannel.listen("MessageToPrivateTree", (e) => dl.log(e, "ex"));

все работает нормально
вот логи echo server
5d566ca179a9d710072642.png

here, joining и leaving выводят сообщения в консоль, но как только нужно обработать listen ничего не происходит, в Network он также не приходит. Как это побороть?

Laravel 5.8
laravel echo server 1.5.6
redis-server 3.0.6
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@andreysuha Автор вопроса
Что то знаю
И так у меня все правильно настроено и корректно работает. Оказалось проблема в самом Laravel 5.8. Временное решение нашел здесь, установкой префикса redis в ""
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы