У меня проблемы с трансляцией событий с помощью Pusher из прослушивателя событий Eloquent. Мои события увольняются и отправляются с контроллера Laravel. Тем не менее, похоже, что трансляции на самом деле не достигают толкателя, когда я запускаю их из моего прослушивателя событий Eloquent.
Метод boot
моего app/Providers/AppServiceProvider.php
содержит:
MyModel::saving(function($record){ doSomeStuf(); // trigger event $pusher = \App::make('pusher'); $channel = $record->username; $pusher->trigger($channel, 'status-changed', $record); doSomeOtherStuf(); return true; });
Файл js, который подписывается на событие, не вызывает проблем с прослушиванием события, когда один и тот же код помещается в контроллер.
Также обратите внимание, что doSomeStuf()
и doSomeOtherStuf()
выполняются достаточно хорошо, и исключение не doSomeOtherStuf()
.
Оказалось, что это проблема синхронизации даты.
Мой локальный сервер – это машина Ubuntu, в то время как мой живой сервер работает в CentOS. Выполнение следующих команд позволило решить проблему:
Ubuntu:
sudo ntpdate ntp.ubuntu.com
CentOS:
sudo ntpdate pool.ntp.org