События Pusher не принимаются на страницах Nuxtjs

Я использую laravel-echo для работы с pusherjs в Nuxtjs.

Раздел 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",

pages / test.vue

<script>    
export default {
  mounted() {
    this.$echo.channel('ch').listen("ev", (res) => {
      console.log(res);
    });
  },
};
</script>

Я вручную отправляю событие через Debug Console Pusherjs, но в консоли Chrome ничего не происходит.

консоль отладки pusherjs

Я уверен, что ключ и мое приложение правильно подключены к pusherjs; потому что, когда я обновляю страницу, журналы появляются в консоли отладки pusherjs:

введите описание изображения здесь

Так почему же события не поступают во фронтенд?


person Fred II    schedule 25.08.2020    source источник


Ответы (2)


Похоже, проблема возникла из-за 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

person Fred II    schedule 25.08.2020

У меня есть подписки:

"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);
});

Хотя в его документе говорится:

this.$echo.channel("channel").listen("event", (res) => {
    console.log(res);
});

Означает, что я должен использовать метод вместо того, чтобы слушать. Надеюсь, это будет полезно!

person tanvir993    schedule 15.09.2020