laravel - 如何使用 laravel 和 pusher api 向特定用户广播事件?
问题描述
我的问题是向特定用户广播事件。我正在构建一个实时聊天应用程序。所以这有私人聊天和群聊。
在一对一聊天(私人聊天)中,如果一个用户向另一个用户发送消息,则将新消息广播给目标用户,而不是所有用户。目前,向所有用户广播。同上,在群聊中,我希望向群中的成员定向广播。
这是我的代码。
laravel 事件
<?php
namespace App\Events;
use App\Message;
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 NewMessage implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($message)
{
$this->message = $message;
// $this->dontBroadcastToCurrentUser();
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chats');
}
}
渠道
<?php
use Illuminate\Support\Facades\Broadcast;
/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::channel('chats', function ($user) {
return auth()->check();
});
解决方案
推荐阅读
- python - Python 元音常量
- python-3.x - FileNotFoundError Traceback(最近一次调用最后一次)
- regex - 正则表达式匹配具有不同值的字符串
- html - div 中两个 hr 标签之间的表格。表格不会从 div 中获取所有属性
- pygame - 如何让子弹从玩家点向光标移动?
- flutter - 这是什么错误:因为 * 取决于 *
- visual-studio - 通过命令行运行但在浏览器中搜索时未找到的 Visual Studio Docker 模板容器
- c++ - 如何比较 C++ 中的长字符串?
- python - 在列表中定义的变量之后命名 Pandas 数据框
- python - 使用 Python Sound-Device 进行实时音频处理不起作用