接收广播_基于 Redis 实现 Laravel 广播功能(下):在私有频道和存在频道发布和接收消息...

本文介绍了如何在 Laravel 中实现私有和存在频道的广播功能。通过创建私有频道广播事件类,客户端可以接收特定频道的授权消息。详细讲解了私有频道的认证与授权过程,并展示了如何在存在频道上广播事件,统计在线用户数量。此外,还讨论了如何将广播消息推送给除当前用户外的其他在线用户。
摘要由CSDN通过智能技术生成

5c2b30812d61bf5481ec82169af54fa0.png

在私有频道广播事件消息

在上面的示例广播事件 UserSignedUp 中,我们通过 Channel 定义了一个公共频道广播,即所有客户端都可以接收到这个事件消息:

public function broadcastOn(){
    
    return new Channel('test-channel');
}
定义私有频道广播事件类

不过很多时候,我们的业务需要实现的都是在私有频道发布消息,比如一个微信群或者 QQ 群内的某个用户发布了消息,只有这个群内的用户才能接收到消息,不可能其他群能收到消息,否则就乱套了,要实现这样的功能,需要借助 Laravel 提供的私有频道类 PrivateChannel

我们新建一个广播事件类 UserSendMessage

php artisan make:event UserSendMessage

然后基于 PrivateChannel 编写一个在私有频道(指定微信群)分发的广播事件消息:

<?php namespace App\Events;use App\Models\User;use Illuminate\Broadcasting\Channel;use Illuminate\Broadcasting\InteractsWithSockets;use Illuminate\Broadcasting\PresenceChannel;use Illuminate\Broadcasting\PrivateChannel;use Illuminate\Contracts\Broadcasting\ShouldBroadcast;use Illuminate\Foundation\Events\Dispatchable;use Illuminate\Queue\SerializesModels;class UserSendMessage implements ShouldBroadcast{
    use Dispatchable, InteractsWithSockets, SerializesModels;public User $user;public string $message;public int $groupId;public string $broadcastQueue = 'broadcast';/**
     * Create a new event instance.
     *
     * @param User $user
     * @param $message
     * @param $groupId
     */public function __construct(User $user, $message, $groupId){ $this->user = $user;$this->message = $message;$this->groupId = $groupId;
    }/**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */public function broadcastOn(){ return new PrivateChannel('wechat.group.' . $this->groupId);
    }
}
客户端接收私有频道广播消息

这样一来,这个事件消息只会广播给监听 'wechat.group.' . $this->groupId 频道的客户端,在客户端(在 resources/views/websocket.blade.php 中模拟),我们可以通过 Echo.private 方法接收上面这个私有频道广播的消息:

...
<script type="text/javascript">let groupId = 1;window.Echo.private('wechat.group.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值