问题描述
我使用laravel-echo
在Nuxtjs中使用pusherjs
。
nuxt.config.js 部分用于pusherjs配置:
buildModules: [
[
'@nuxtjs/laravel-echo',{
broadcaster: 'pusher',key: 'my-key-here',cluster: 'eu',forceTLS: true
}
]
],
package.json
"vue": "^2.6.12","nuxt": "^2.14.3","pusher-js": "^7.0.0","@nuxtjs/laravel-echo": "^1.1.0",
页面/test.vue
<script>
export default {
mounted() {
this.$echo.channel('ch').listen("ev",(res) => {
console.log(res);
});
},};
</script>
我通过Pusherjs的Debug Console
手动发送了事件,但是在Chrome的控制台中什么也没发生。
我确定密钥和我的应用程序已正确连接到pusherjs;因为当我刷新页面时,日志出现在pusherjs的调试控制台中:
那么为什么前端没有收到事件?
解决方法
问题似乎是由于v1.1.0
中的@nuxtjs/laravel-echo
。
我用过:
this.$echo.channel("ch").on("ev",(res) => {
console.log(res);
});
代替:
this.$echo.channel('ch').listen("ev",(res) => {
console.log(res);
});
问题解决了! (只需将on
替换为listen
)
参考:
https://github.com/nuxt-community/laravel-echo/issues/17#issuecomment-637520496
,我有以下内容:
"nuxt": "^2.14.3","pusher-js": "^7.0.0","@nuxtjs/laravel-echo": "^1.1.0",
我必须使用:
this.$echo.channel("channel").on("event",(res) => {
console.log(res);
});
尽管其document表示要使用:
this.$echo.channel("channel").listen("event",(res) => {
console.log(res);
});
意味着我必须链接“ on”方法而不是“ listen”。希望这会有所帮助!