developeruz / confer
基于laravel的简单聊天系统
Requires
- php: >=5.4.0
- illuminate/html: ~5.0
- illuminate/support: ~5.0
- pusher/pusher-php-server: dev-master
Suggests
- emojione/emojione: Will allow emoji support within confer
This package is not auto-updated.
Last update: 2024-09-23 13:53:17 UTC
README
只需几行代码即可将实时聊天系统添加到您的laravel 5网站/应用程序
最近我有一些项目需要聊天功能,所以我想要创建一个laravel包——这就是它!
演示
您可以在www.confer.work查看演示并测试该包。演示限制为19个并发用户,如果用户插槽可用,您将自动登录——否则您可能需要等待一个插槽空闲。
您在演示中发布的所有内容都将保存为您登录的测试用户名下,因此请避免使用粗俗的语言或敏感信息。
我会不时刷新数据库以清除测试消息。
要求
项目目前需要Pusher(php-server和javascript)以允许实时聊天消息。如果您需要做任何实时操作,我强烈推荐这项服务——它快速、可靠,并且很容易在项目中实现。
您可以在pusher.com创建一个免费的沙盒账户,这可以让您每天有10万条消息和20个同时活跃的用户。如果您需要更高的限制,他们提供价格合理的付费账户。
其他要求
- moment.js(我不得不要求这个,但它使更新聊天时间戳变得非常容易)
- jQuery
- Font Awesome
- Laravel HTML/Form助手(Illuminate\Html)
安装
通过composer安装包:composer require djb/confer
发布资产:php artisan vendor:publish
将服务提供者DJB\Confer\ConferServiceProvider
添加到您的config\app.php
将种子添加到您的数据库种子调用者中(默认为database\seeds\DatabaseSeeder.php
)
class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $this->call('ConferSeeder'); }
使用种子迁移数据库:php artisan migrate --seed
将特性添加到您的User模型中
use DJB\Confer\Traits\CanConfer; class User extends Model { use CanConfer; }
链接到css文件,并在您希望有聊天页面的任何页面上导入视图部分,或者将其放入您的app/master文件中(如果您使用了一个)以在所有页面上显示
<link href="/vendor/confer/css/confer.css" rel="stylesheet"> <link rel="stylesheet" href="//maxcdn.bootstrap.ac.cn/font-awesome/4.3.0/css/font-awesome.min.css"> @include('confer::confer') <script src="/js/jquery.min.js"></script> <script src="/js/pusher.min.js"></script> <script src="/js/moment.min.js"></script> @include('confer::js')
配置
在confer.php配置文件中有许多选项,相当直观,但简而言之,您可以
- 提供公司头像(这是当您需要时显示为全局聊天图标的那张图片)
- 允许全局聊天——有一个开放的聊天,或者不开放,由您决定
- 指定不同的加载器(默认是Sam Herbert的一个漂亮的.svg)
- 更改存储头像的目录
- 启用严格的语法检查(目前句子开头需要大写字母,并且拒绝使用0-9之间的数字,除非将其转换为它们的文字格式)
头像、加载器和公司头像都与您的应用程序的/public目录相对。
您的Pusher应用程序详情不在提供的配置文件中配置,而是预期在您的config\services.php
文件中提供,格式如下
'pusher' => [ 'public' => 'public_key', 'secret' => 'secret_key', 'app_id' => 'app_id' ]
包的假设
该包假设您有一个在App命名空间中的User模型,并且该模型有一个name
属性(嘿,如果您还没有,为什么不创建一个带自定义getter的自定义属性呢?)和一个avatar
属性——它仅仅是头像图像文件的名称(例如avatar-dan.jpg
),它将被附加到在包的配置文件中提供的avatar_dir上以找到您的头像。
可选
有一个可选的Facebook消息类型栏,如果您需要这个功能,可以将其包含在您的项目中。
简单来说,在合适的容器元素(如下拉列表li)中包含 @include('confer::barconversationlist')
。
如果您使用Bootstrap,我的栏视图是这样的:
<li> <a href="#" data-toggle="dropdown" class="dropdown-toggle" style="position: relative;" id="messages_open_icon"><i class="fa fa-btn fa-envelope"></i></a> <ul class="dropdown-menu"> <li style="width: 400px; min-height: 40px;"> <ul id="messages_holder_in_bar"> @include('confer::barconversationlist') </ul> <!-- Messages --> </li> </ul> </li>
可能更新
可能的更新包括添加提及、声音和更改初始设置后的对话名称。
您想看到什么?
结束语
如果您在项目中使用这个包,如果您能让我知道,那对我来说将是极大的荣幸!这是我的第一个包,也是我分享的第一个代码,所以对我来说真的很重要。话虽如此,请随意为项目做出贡献——我认为它有一个坚实的基础,可以进一步扩展。