gpt4 book ai didi

php - 如何在Vue项目中实现laravel-echo客户端

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:06 27 4
gpt4 key购买 nike

我正在开发一个使用 Vuetify (Vue.js) 作为前端的应用程序,它与 laravel 后端服务器进行通信。

我正在尝试使用 laravel-echo-serversocket.io 建立一个通知系统。并且也在客户端中使用 laravel-echo。

我在客户端组件中用来测试连接是否有效的代码是:

// Needed by laravel-echo
window.io = require('socket.io-client')

let token = this.$store.getters.token

let echo = new Echo({
broadcaster: 'socket.io',
host: 'http://localhost:6001',
auth: {
headers: {
authorization: 'Bearer ' + token,
'X-CSRF-TOKEN': 'too_long_csrf_token_hardcoded'
}
}
})

echo.private('Prova').listen('Prova', () => {
console.log('IT WORKS!')
})

这是laravel-echo-server.json的代码

{
"authHost": "http://gac-backend.test",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"apiOriginAllow": {
"allowCors": false,
"allowOrigin": "",
"allowMethods": "",
"allowHeaders": ""
}
}

我尝试修改 apiOriginsAllow 但没有成功。事件已发送,我可以在 laravel-echo-server 日志中看到它:

Channel: Prova
Event: App\Events\Prova

但之后,当我访问包含连接代码的客户端组件时,我可以在 laravel-echo-server 日志中看到长错误跟踪和下一个错误:

The client cannot be authenticated, got HTTP status 419

如您所见,我在 laravel echo 客户端的 header 中指定了 csrf token 和授权 token 。但它不起作用。

这是routes/channels.php的代码:

Broadcast::channel('Prova', function ($user) {
return true;
});

我只想听一个事件,它是私有(private)的还是公共(public)的并不重要,因为当它起作用时,我想将它放入 service worker 中。那么,我想如果它是公开的会更好。

  • 如何在 laravel 项目之外使用 laravel echo client?
  • 如果我制作私有(private)事件并尝试将其收听给 service worker,会有问题吗?

最佳答案

您好,我将向您介绍如何使用 Laravel 和 Echo 功能配置 VUE 的整个步骤

Step1先安装laravel

composer create-project laravel/laravel your-project-name 5.4.*

第 2 步 设置变量更改 Broadcastserviceprovider

我们首先需要注册App\Providers\BroadcastServiceProvider。打开 config/app.php 并取消注释 providers 数组中的以下行。

// App\Providers\BroadcastServiceProvider

我们需要告诉 Laravel 我们正在使用 .env 文件中的 Pusher 驱动程序:

BROADCAST_DRIVER=pusher

在 config/app.php 中添加 pusher 类

'Pusher' => Pusher\Pusher::class,

第 3 步 将 Pusher 添加到您的 laravel 项目

composer require pusher/pusher-php-server

第 4 步 将以下内容添加到 config/broadcasting.php

'options' => [
'cluster' => env('PUSHER_CLUSTER'),
'encrypted' => true,
],

第 5 步设置推送器变量

PUSHER_APP_ID=xxxxxx
PUSHER_APP_KEY=xxxxxxxxxxxxxxxxxxxx
PUSHER_APP_SECRET=xxxxxxxxxxxxxxxxxxxx
PUSHER_CLUSTER=xx

第六步安装节点

npm install

第 7 步 安装 Pusher js

npm install --save laravel-echo pusher-js 

第 8 步取消关注

// resources/assets/js/bootstrap.js

import Echo from "laravel-echo"

window.Echo = new Echo({
broadcaster: 'pusher',
key: 'xxxxxxxxxxxxxxxxxxxx',
cluster: 'eu',
encrypted: true
});

第 9 步创建迁移之前

// app/Providers/AppServiceProvider.php
// remember to use
Illuminate\Support\Facades\Schema;

public function boot()
{
Schema::defaultStringLength(191);
}

关于php - 如何在Vue项目中实现laravel-echo客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50017159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com