murkrow / simple-chat
此包最新版本(0.6.3)没有可用的许可证信息。
0.6.3
2024-05-15 18:40 UTC
Requires
Requires (Dev)
- laravel/pint: *
README
A simple Laravel package to add intuitive and simple chat logic to your application
要求
- Axios
- TailwindCSS
安装
1 - 使用composer安装包
composer require murkrow/simple-chat
2 - 发布包文件
php artisan vendor:publish --provider="Murkrow\Chat\ChatServiceProvider" --force
3 - 在您的.env
文件中设置pusher凭证
PUSHER_APP_ID=your-pusher-app-id PUSHER_APP_KEY=your-pusher-key PUSHER_APP_SECRET=your-pusher-secret PUSHER_APP_CLUSTER=mt1 BROADCAST_DRIVER=pusher
4 - 在.env
文件中包含以下变量
VITE_APP_NAME="${APP_NAME}" VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
5 - 安装laravel echo和pusher npm包
npm install --save-dev laravel-echo pusher-js
6 - 安装laravel pusher composer包
composer require pusher/pusher-php-server
7 - 将以下代码添加到您的resources/js/bootstrap.js
文件中
import Echo from 'laravel-echo'; import Pusher from 'pusher-js'; window.Pusher = Pusher; window.Echo = new Echo({ broadcaster: 'pusher', key: import.meta.env.VITE_PUSHER_APP_KEY, cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', enabledTransports: ['ws', 'wss'], });
注意
请确保在config/app.php文件中取消注释App\Providers\BroadcastServiceProvider::class
使用方法
将CanChat
特质添加到您的User模型中
use Murkrow\Chat\Traits\CanChat; class User { use CanChat; }
通过重写以下方法来自定义特质
class User { use CanChat; public function getSecondLineAttribute(): string { return $this->email; } public function getAvatarUrlAttribute(): string { return $this->avatar; } public function getUsersToStartChatWith() : Builder { return Utils::getUserClass()::where('id', '!=', $this->id); } public function canChatWith($targetUserId): bool { return $targetUserId->role !== 'admin'; } }
事件
当发送新消息时,该包会将NewMessage
事件广播到通道chat.{chat_id}
。