我正在使用带有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
的无记名令牌。
答案 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
})
}