ashfaq1701/laravel-chat

为laravel 5.2或更低版本提供的基本频道聊天实现

安装: 47

依赖者: 0

建议者: 0

安全性: 0

星级: 2

观察者: 2

分支: 2

开放问题: 0

语言:CSS

类型:

1.0.0 2016-09-26 08:37 UTC

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\SocketServiceProviderAshfaq1701\LaravelChat\Providers\LaravelChatServiceProvider提供程序添加到config/app.php中的providers数组中

'providers' => [
    ...
    Codemash\Socket\SocketServiceProvider::class,
    Ashfaq1701\LaravelChat\Providers\LaravelChatServiceProvider::class,
],

然后运行以下命令

php artisan vendor:publish

发布资产可在config/socket.phpconfig/chat.phpapp/Http/Controllers/Chatapp/Repositoriesapp/Listenersapp/Modelsdatabase/migrationsdatabase/seedsresources/views/chat、CSS和javascripts在public/vendor/socketpublic/vendor/chat目录中找到。也会发布路由。重要的是要知道,Chat::javascript()外观函数将包括默认的socket位于window.appSocket以及位于供应商文件夹中的socket.jsajax-fileupload.jschat.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。任何改进都是受欢迎的。