我设置了一个活动和新频道:
class TaskCreated implements shouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $task;
public function __construct(Task $task)
{
$this->task = $task;
}
}
并安装了 Echo 并进行了设置
import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'pusher-key',
cluster: 'ap2',
encrypted: true
});
然后我在发布任务时调用 TaskCreated 事件
event(new TaskCreated($task));
然而,问题是 Echo 不听推送日志或任何东西。即使在 laravel-websockets 中,事件是作为 api 消息创建的。
这是 vue js Echo 实现:
mounted () {
axios.get('/tasks').then(response => (this.tasks = response.data));
Echo.channel('taskCreated').listen('TaskCreated', (e) => {
console.log(e);
this.tasks.push(task.body)
});
在仪表板中:
api-message Channel: taskCreated, Event: App\Events\TaskCreated 19:01:55
更新
现在,当我尝试与 WS 连接时,连接状态等待 10 秒,然后在建立连接之前出现错误 WebSocket is closed。AND 连接建立错误:net::ERR_CERT_AUTHORITY_INVALID。
请求网址:wss://127.0.0.1/app/local?protocol=7&client=js&version=6.0.2&flash=false
import Echo from "laravel-echo"
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: window.location.hostname,
wssPort: 6001,
disableStats: true,
enabledTransports: ['ws', 'wss']