套接字IO客户端应该是全局可用的错误

时间:2019-07-16 19:13:06

标签: laravel vue.js socket.io nuxt laravel-echo

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

当我以这种方式使用它时:

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() ....效果很好。.

但是当我尝试在data属性中声明它时,由于在服务器端渲染而出现了错误……我如何在服务器端渲染上使用socket.io-client或如何在客户端声明它,因为我需要访问getters的无记名令牌。

1 个答案:

答案 0 :(得分:0)

我想我已经找到了未知原因的方法: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
  })
}
相关问题