#javascript #laravel #laravel-5 #laravel-5.2 #pusher
#javascript #laravel #laravel-5 #pusher
Вопрос:
Я использую laravel 5.2 и реализую уведомление в режиме реального времени при завершении задачи. У меня есть одно событие и один слушатель. Моя конечная цель — показать предупреждение javascript на странице при отправке события.
AppEventsUserAppTriggerMarkTopicComplete.php
class MarkTopicComplete extends Event implements ShouldBroadcast{
...
public function broadcastWith(){
return [
'user_id' => $this->user_id,
'topic_id' => $this->topic_id
];
}
public function broadcastOn(){
return ['topic-complete'];
}
App Listeners User App Trigger MarkTopicComplete LogActivity
public function handle(MarkTopicComplete $event){
$this->user_id = $event->user_id;
$this->user_email = $event->user_email;
$this->topic_id = $event->topic_id;
Log::info('User '.$this->user_email.' has completed the TOPIC ID: '. $this->topic_id);
}
Интерфейс
<script src="//js.pusher.com/3.2/pusher.min.js"></script>
<script>
var pusher = new Pusher('{{ config('broadcasting.connections.pusher.key') }}', {
encrypted: true
});
Pusher.logToConsole = true;
var channel = pusher.subscribe('topic-complete');
channel.bind('App\Events\User\App\TriggerMarkTopicComplete', function(data) {
// Over here i would like to alert the frontend with the topic id that is sent from the event.
alert(data.topic_id);
});
</script>
Это то, что я получаю в своей КОНСОЛИ:
Pusher : State changed : connecting -> connected with new socket ID 204817.3725229
pusher.min.js:8 Pusher : Event sent : {"event":"pusher:subscribe","data":{"channel":"topic-complete"}}
1?session=OTk2NDUyOTMxamp;bundle=MQ%3D%3Damp;key=ODY4MTU1MjE4NWU0ZjFkYzY0YTI%3Damp;lib=anM%3Damp;version=My4yLj…:1 Uncaught TypeError: Pusher.ScriptReceivers[1] is not a function(anonymous function) @ 1?session=OTk2NDUyOTMxamp;bundle=MQ%3D%3Damp;key=ODY4MTU1MjE4NWU0ZjFkYzY0YTI%3Damp;lib=anM%3Damp;version=My4yLj…:1
pusher.min.js:8 Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"topic-complete"}
pusher.min.js:8 Pusher : No callbacks on topic-complete for pusher:subscription_succeeded
pusher.min.js:8 Pusher : Event recd : {"event":"App\Events\User\EstudyAcademy\Trigger\MarkTopicComplete","data":{"user_id":1,"topic_id":2},"channel":"topic-complete"}
pusher.min.js:8 Pusher : No callbacks on topic-complete for AppEventsUserEstudyAcademyTriggerMarkTopicComplete
Как вы можете видеть, я получаю «data»: {«user_id»: 1, «topic_id»: 2}, но я не могу сделать что-то вроде
alert (data.user_id);
Я думаю, это может быть из-за этой ошибки
Неперехваченная ошибка типа: Pusher.ScriptReceivers[1] не является функцией
Комментарии:
1. каково решение этой проблемы?
Ответ №1:
У меня была такая же ошибка с OctoberCMS (CMS на базе Laravel) и Pusher. Причиной моей проблемы было то, что я случайно вставил js-файл pusher (pusher.js ) дважды на одной и той же странице. Удаление одного из них решило проблему.