【发布时间】:2020-02-03 02:17:11
【问题描述】:
"laravel-echo": "^1.6.0",
"pusher-js": "^5.0.2",
我正在使用 Laravel WebSockets 使用 Laravel Echo 将事件发送到我的 Vue.js 应用程序: 从“laravel-echo”导入 Echo;
window.Pusher = require('pusher-js');
首先,当我连接我的应用程序时,我看到了这条消息:
Connection id 473581849.201555836 sending message {"event":"pusher:connection_established","data":"{\"socket_id\":\"473581849.201555836\",\"activity_timeout\":30}"}
当我断开连接时,我看到了这个:
Connection id 603442282.571320345 closed.
所以该应用程序与 Laravel WebSocket 通信良好,这没有问题,因为它从我的应用程序接收到连接和连接数据包。
当我尝试在前端读取来自服务器的数据包时,我的问题出现了,我就是无法获取它。
const echo = new Echo({
broadcaster: 'pusher',
cluster: process.env.WEBSOCKET_CLUSTER,
key: process.env.WEBSOCKET_KEY,
wsHost: process.env.WEBSOCKET_URL,
wssHost: process.env.WEBSOCKET_URL,
wsPort: process.env.WEBSOCKET_PORT,
wssPort: process.env.WEBSOCKET_PORT,
encrypted: process.env.WEBSOCKET_ENCRYPTED,
disableStats: process.env.WEBSOCKET_DISABLE_STATS,
enabledTransports: ['ws', 'wss']
// auth: {
// headers: {
// 'Accept': 'application/json',
// 'Authorization': 'Bearer ' + window.localStorage.getItem('accessToken')
// }
// }
});
export default ({ Vue }) => {
Vue.prototype.$echo = echo;
};
例如,这是一个收到的事件(这是我从 ssh 控制台得到的):
Connection id 545411452.62710705 sending message {"event":"log-message","channel":"private-websockets-dashboard-api-message","data":{"type":"api-message","time":"20:06:24","details":"Channel: androidMobile, Event: App\\Events\\UpdateAndroidNavBarCounts","data":"{\"message\":{\"countincompletereports\":0,\"countviewmyreports\":1002,\"countpoints\":300,\"user_id\":63}}"}}
此事件在此处:App\Events\UpdateAndroidNavBarCounts
我无法在我的前端得到它,我试过这个:
this.$echo.channel('androidMobile')
.listen('.App.Events.UpdateAndroidNavBarCounts', function (data) {<------------
console.log('This is a test 2');
this.$store.dispatch('common/UpdateAndroidNavBarCounts', data, { root: true });
})
这个
this.$echo.channel('androidMobile')
.listen('App.Events.UpdateAndroidNavBarCounts', function (data) {<------------
console.log('This is a test 2');
this.$store.dispatch('common/UpdateAndroidNavBarCounts', data, { root: true });
})
这个:
this.$echo.channel('androidMobile')
.listen('.UpdateAndroidNavBarCounts', function (data) {<------------
console.log('This is a test 2');
this.$store.dispatch('common/UpdateAndroidNavBarCounts', data, { root: true });
})
甚至这个:
this.$echo.channel('androidMobile')
.listen('UpdateAndroidNavBarCounts', function (data) { <------------
console.log('This is a test 2');
this.$store.dispatch('common/UpdateAndroidNavBarCounts', data, { root: true });
})
我从未设法看到 console.log('This is a test 2');消息。
任何帮助都将不胜感激,因为我已经为此苦苦挣扎了好几天,我开始相信这是一个错误。
谢谢。
【问题讨论】:
-
在浏览器开发工具中,网络下,你能看到实际收到的websocket消息吗?