Socket IO client should be globally available 错误

Socket IO client should be globally available error

我正在使用 nuxt/laravel api 与 laravel-echo-server 和 socket.io-client。

当我这样使用它时:

import Echo from 'laravel-echo'
if (process.client) {
  window.io = require('socket.io-client')
  window.Echo = new Echo({
     broadcaster: 'socket.io',
     host: 'http://seekers-backend.com:6001',
     auth: { headers: { Authorization: 'Bearer-token' } }
  })
}

然后使用window.Echo.private().listen()..它完美地工作..

但是当我尝试在数据 属性 中声明它时出现错误,因为它是在服务器端渲染的...我如何在服务器端渲染上使用 socket.io-client 或如何声明它在客户端,因为我需要访问 getters 以获得 Bearer 令牌。

我想我找到了未知原因的方法 :D

从 'laravel-echo'

导入 Echo
if (process.client) {
  window.io = require('socket.io-client')
}

然后

mounted() {
  let echo = new Echo({
    broadcaster: 'socket.io',
    host: 'http://seekers-backend.com:6001',
    auth: { headers: { Authorization: this.token } }
  })
  echo.private('user.' + this.$auth.user.id)
  .listen('MessageEvent', (e) => {
    // Do stuff
  })
}