【问题标题】:Socket IO client should be globally available errorSocket IO 客户端应该是全局可用的错误
【发布时间】:2019-11-25 14:07:54
【问题描述】:

我将 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().. 完美运行..

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

【问题讨论】:

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


    【解决方案1】:

    我想我找到了未知原因的工作方式: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
      })
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 2016-06-04
      • 2013-06-29
      • 2020-02-23
      • 1970-01-01
      • 2020-01-01
      • 2020-05-17
      相关资源
      最近更新 更多