我正在开发这个项目,简而言之,它有一个用 laravel reverb 实现的实时聊天系统。 Laravel 服务器上调度事件的所有内容都工作正常,并且客户端可以通过 echo 正确接收事件。
问题是当我尝试通过 websocket 连接在前端处理发送消息时。我正在关注 joe dixon 在 laracon 欧盟会议link 中所做的事情。我在前端使用这个脚本。
Echo.connector.pusher.send_event(
'SendMessage',
JSON.stringify({ testKey: 'test value' }),
'Users.2.ChatList'
);
现在,即使此 Users.{id}.ChatList 是在channels.php 中定义的私有通道,并且用户未经过身份验证或连接到任何通道,该事件仍会在后端作为该通道上的事件接收。没有授权发生!! 这就是我在 AppServiceProvider 的后端接收这些前端事件的方式:
Event::listen(
MessageReceived::class,
TestListener::class
);
有什么想法应该如何处理吗?我希望只有经过身份验证并连接到该通道(例如“Users.2.ChatList”通道)的用户才能发送此类消息。
您找到解决方案了吗?我的项目也遇到同样的问题。