gpt4 book ai didi

laravel 事件应该广播不工作

转载 作者:可可西里 更新时间:2023-11-01 11:47:57 25 4
gpt4 key购买 nike

我正在尝试制作一个实时 socket.io 应用程序。

redis connect 很好,因为我可以在 tinker 中做到这一点并且工作正常。

Redis::publish('test-channel','test-message');

但是我想用事件来发布消息

app\Events\ChatMessage.php:

    namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class ChatMessage implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;

public $name;
public $message;

public function __construct($name,$message)
{

$this->name = $name;
$this->message = $message;
}

public function broadcastOn()
{

return ['test-channel'];
// return new Channel('test-channel');
}
}

在公共(public)函数 broadcastOn 中

我试过了

           return ['test-channel'];
return 'test-channel';
return new Channel('test-channel');

一切都不行。

我在 tinker 中这样做

event(new App\Events\ChatMessage('bear','banana'));

laravel 只返回 []

我知道我可以使用监听器通过 Redis::publish() 来处理它,但大多数教程都不这样做。

我还需要检查什么?

最佳答案

我发现即使我触发事件,消息也会排队。

在我跑完之后

php artisan queue:listen

客户端收到消息!

所以我通过将 ShouldBroadcast 更改为 ShouldBroadcastNow 来解决它,并且它起作用了!

关于laravel 事件应该广播不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51277125/

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