ashfaq1701 / laravel-chat
为laravel 5.2或更低版本提供的基本频道聊天实现
Requires
- codemash/laravel-socket: ^1.0
- fzaninotto/faker: ^1.6
This package is not auto-updated.
Last update: 2024-09-18 20:24:52 UTC
README
本包是基于Laravel pacakage Laravel Socket 的使用Ratchet实现的简单但功能丰富的聊天功能实现。它是一个基于频道的聊天平台,具有群组聊天的基础、文件和图片消息以及客户端图片显示。它还具有用户在线和离线状态的推送通知。具有有限的消息加载和加载更多选项。即使需要修改CSS,也可以一次性部署为聊天应用程序。它具有简单的安装程序和发布资源,以适应任何用例。
要求
Laravel 5.2。5.3支持即将推出。
安装
您可以使用Composer包管理器安装此包。您可以在项目根目录下运行此命令来安装它
composer require ashfaq1701/laravel-chat
将Codemash\Socket\SocketServiceProvider
和Ashfaq1701\LaravelChat\Providers\LaravelChatServiceProvider
提供程序添加到config/app.php
中的providers
数组中
'providers' => [ ... Codemash\Socket\SocketServiceProvider::class, Ashfaq1701\LaravelChat\Providers\LaravelChatServiceProvider::class, ],
然后运行以下命令
php artisan vendor:publish
发布资产可在config/socket.php
、config/chat.php
、app/Http/Controllers/Chat
、app/Repositories
、app/Listeners
、app/Models
、database/migrations
、database/seeds
、resources/views/chat
、CSS和javascripts在public/vendor/socket
和public/vendor/chat
目录中找到。也会发布路由。重要的是要知道,Chat::javascript()
外观函数将包括默认的socket位于window.appSocket
以及位于供应商文件夹中的socket.js
、ajax-fileupload.js
和chat.js
源文件。这些只是一个起点,提供了一种快速处理聊天和套接字的方法,但您始终可以自由编写自定义实现。
发布后,您还需要再次执行一些步骤。
将App\Providers\ChatEventServiceProvider
添加到config/app.php
中的providers
数组中。
'providers' => [ ... App\Providers\ChatEventServiceProvider::class, ],
然后,将外观添加到您的aliases
数组中。默认外观提供了一个易于使用的接口,用于将套接字文件集成到您的视图中。
'aliases' => [ ... 'Socket' => Codemash\Socket\Facades\Socket::class, 'Chat' => Ashfaq1701\LaravelChat\Facades\Chat::class, ]
然后运行迁移
php artisan migrate
提供了一些帮助种子,以帮助您开始。要将它们运行,请将它们添加到DatabaseSeeder
类的run方法中。您可能需要运行一次composer dump-autoload命令,以便种子生效。
public function run() { $this->call(UserTableSeeder::class); $this->call(ChannelsUsersTableSeeder::class); }
然后运行这些种子
php artisan db:seed
从App\User
模型中使用Ashfaq1701\LaravelChat\Traits\Chattable
特质。
... use Ashfaq1701\LaravelChat\Traits\Chattable; class User extends Authenticatable { use Chattable; ...
然后,在App\Http\Middleware\VerifyCsrfToken.php
中排除ajax文件上传路由的CSRF保护。否则,文件和图片消息将无法工作。此外,在public\
中创建空的uploads/files
目录。
class VerifyCsrfToken extends BaseVerifier { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ '/uploads/file' ]; }
最后一件事是在resources\views\layouts\app.blade.php
中添加一个部分。在所有javascript声明之后,添加一个名为custom-scripts
的部分。如下所示
... @yield('content') <!-- JavaScripts --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"pl-v">I6F5OKECLVtK/BL+8iSLDEHowSAfUo76ZL9+kGAgTRdiByINKJaqTPH/QVNS1VDb" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js"pl-c1">0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> {{-- <script src="{{ elixir('js/app.js') }}"></script> --}} @yield('custom-scripts') </body> </html>
入门指南
最后,让我们运行socket监听器。您可以通过在项目根目录中运行以下artisan命令来完成此操作
php artisan socket:listen
之后运行应用程序(开发环境)。
php artisan serve
检查数据库中一组邮箱和密码(如果seeder已经运行,最好是第一个用户)。然后登录系统并访问https://:8000/chat
地址。您将看到一个完全运行的聊天程序。对其进行实验。所有文件都已发布,所以您可以进行几乎任何所需的定制。
生产环境
Ubuntu提供了方便的nohup
工具,可以在后台运行进程。如果您想在生产服务器上运行套接字并且使用Ubuntu,您始终可以使用nohup工具来运行套接字监听器。
nohup php artisan socket:listen &
使用jobs
命令时,您会看到套接字正在运行。使用kill <pid>
命令可以轻松终止进程。进程ID列在任务列表中。
贡献
如果您遇到问题、发现错误或有一些建议,请登录并提交一个issue到Github。如果您想亲自尝试,可以fork这个包并提交一个pull request。任何改进都是受欢迎的。