我最近设置了Laravel应用程序并配置了Echo以接收Pusher Notifications。遗憾的是,即使接收到事件并且数据也随之触发,也不会触发回调函数。您可以在下面找到我的代码:
web.php
Route::get('/pusher', function() {
$location = ['lang' => 'langTets', 'lat' => 'latTest'];
event(new Freight\Events\LocationUpdated($location));
return "Event has been sent!";
});
bootstrap.js
import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
Pusher.logToConsole = true;
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'iscorrect',
cluster: 'eu',
encrypted: true
});
window.Echo.channel('location-updates')
.listen('.LocationUpdated', function(location) {
console.log("Test");
});
我的app.blade
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Freight</title>
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<!-- JS -->
<script src="{{ asset('js/app.js') }}"></script>
</head>
<body>
...
当我打开页面时,这会显示在我的控制台中:
app.js:32652 Pusher : State changed : initialized -> connecting
app.js:32652 Pusher : Connecting : {"transport":"ws","url":"censoredstuff"}
app.js:32652 Pusher : State changed : connecting -> connected with new socket ID morecensoredstuff
app.js:32652 Pusher : Event sent : {"event":"pusher:subscribe","data":{"channel":"location-updates"}}
app.js:32652 Pusher : Event recd : {"event":"pusher_internal:subscription_succeeded","data":{},"channel":"location-updates"}
app.js:32652 Pusher : No callbacks on location-updates for pusher:subscription_succeeded
现在,在触发事件时,这是控制台中显示的内容:
Pusher : Event recd : {"event":"Freight\\Events\\LocationUpdated","data":{"location":{"lang":"langTets","lat":"latTest"}},"channel":"location-updates"}
app.js:32652 Pusher : No callbacks on location-updates for Freight\Events\LocationUpdated
你有什么线索,为什么console.log无法正常工作?如果需要更多信息,请随时提出。
答案 0 :(得分:0)
我仍然没有找出问题的根源。但是,这完全解决了它:
broadcastAs(){
return 'myneweventname';
}