saritasa/laravel-chat-api

此包已被弃用且不再维护。未建议替代包。

实现laravel之上的聊天API的类

2.0.0 2018-06-22 09:41 UTC

This package is auto-updated.

Last update: 2024-09-09 17:11:06 UTC


README

PHP Unit PHP CodeSniffer codecov

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,
	],
];

贡献

  1. 创建分支
  2. 检出分支
  3. 本地开发如常。 代码必须遵循 PSR-1PSR-2
  4. 更新 README.md 以描述新的或更改的功能。将更改描述添加到 CHANGE 文件。
  5. 准备就绪后,创建拉取请求

资源