saritasa / laravel-chat-api
此包已被弃用且不再维护。未建议替代包。
实现laravel之上的聊天API的类
2.0.0
2018-06-22 09:41 UTC
Requires
- php: >=7.1
- dingo/api: 2.0.0-alpha1
- illuminate/http: 5.5
- illuminate/support: 5.5
- saritasa/laravel-entity-services: ^1.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^6.5
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-09 17:11:06 UTC
README
Laravel 聊天 API
为您的项目在 Laravel 的 Broadcasting 功能之上添加聊天功能。
Laravel 5.5+
不支持低版本。
安装和配置 安装 saritasa/laravel-chat-api
包
bash $ composer require saritasa/laravel-chat-api
使用以下命令发布配置
bash $ artisan vendor:publish --tag=laravel_chat_api
更新 config/laravel_chat_api.php 部分
- 将 IChatUser 接口实现到您的应用程序用户模型中,并更新参数
userModelClass
。 - 检查通知部分,并添加您自己的通知代替这些模拟。
至少配置一个 broadcasting driver
使用服务 在所需的类中添加 IChatService 接口注入。
方法: - 创建聊天
$chatService->createChat($creator, ['name' => 'New Chat'], [1, 2]);
位置 [1, 2] - 排除创建者的聊天参与者的标识符。
- 关闭聊天
$chatService->closeChat($creator, $chat);
请记住,只有创建者可以关闭聊天,不能关闭“已关闭”的聊天。在这种情况下将抛出 ChatException。
异常。
- 离开聊天
$chatService->leaveChat($user, $chat);
当创建者离开聊天时,其中一个参与者成为创建者。
- 在聊天中发送消息
$chatService->sendMessage($sender, $chat, $message);
- 标记聊天为已读
$chatService->markChatAsRead($chat, $user);
事件
聊天事件
在聊天通道中抛出,供所有参与聊天的订阅者。
- MessageSentEvent 在参与者发送新消息时抛出。
- ChatLeavedEvent 在参与者离开此聊天时抛出。
- ChatClosedEvent 在创建者关闭此聊天时抛出。
用户事件
在用户通道中抛出,供所有参与聊天的订阅者,但不包括事件发起者。
- ChatCreatedEvent 在用户创建新聊天时抛出。
- MessageSentEvent 在参与者发送新消息时抛出。
- ChatClosedUserEvent 在创建者关闭此聊天时抛出。
- ChatReopenedUserEvent 在创建者重新打开已关闭的聊天时抛出。
广播设置
要将其与 Laravel 广播集成,只需更新您的广播路由文件(默认为 routes/channels.php)中的以下示例
... use Saritasa\LaravelChatApi\Events\ChatCreatedEvent; use Saritasa\LaravelChatApi\Events\ChatEvent; use Saritasa\LaravelChatApi\Contracts\IChatUser; ... // Using model binding for chat events channel. Broadcast::channel(ChatEvent::CHANNEL_PREFIX . '{chat}', function ($user, Chat $chat) { // Checking that auth user is chat participant. return $chat->getUsers()->pluck('id')->contains($user->id); }); Broadcast::channel(ChatCreatedEvent::CHANNEL_PREFIX . '{id}', function ($user, int $id) { return (int)$user->id === $id; });
请参阅官方 文档 了解如何定义授权回调。 现在所有聊天事件将通过您的广播驱动程序分发。
通知设置
为了轻松发送通知,您应该创建自己的 通知 并更新 laravel_chat_api.php
配置文件。 以下是一个示例,当聊天被重新打开时发送通知:
return [ ... 'notifications' => [ ... 'chatReopened' => App\Notifications\MyOwnChatReopenedNotification::class, ], ];