Выполнить некоторые функции бэкэнда, когда вкладка браузера закрыта - PullRequest
0 голосов
/ 05 апреля 2020

Я хочу выполнить некоторую функцию в фоновом режиме, когда вкладка браузера закрыта.

Я использую vuejs и laravel 6.2. это laravel смешанный проект.

когда вкладка браузера закрыта или удалена, я хочу go в laravel контроллере и выполнять методы в базе данных.

Я использовал javascript onbeforeunload метод, но он не работает. дайте мне некоторую идею или подсказку о том, как это сделать.

1 Ответ

0 голосов
/ 05 апреля 2020

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

Вам необходимо:

  • Laravel Эхо-клиент который подключается к каналу присутствия (https://github.com/tlaverdure/laravel-echo-server#presence -каналы )

  • a Laravel Echo Server, который публикует содержимое канала в Redis

  • сервер Redis

  • команда Artisan, которая подписывается на Redis и получает содержимое канала => некоторый Laravel код (осторожно, это должен быть автономный процесс, потому что PHP не является асинхронным!)

Механизм автоматически срабатывает как при присоединении, так и при выходе, и часто средство ухода означает «закрытый язычок»

...