轻松学会Workerman实战

Laravel + GatewayWorker

此课程是收费课程,请先购买或加入会员后再访问。

如果你还没有学过laravel框架,在学习正式对接之前,可以先去看一下我录制的 超简单的Laravel新手入门教程Laravel技巧库

如果你是用thinkphp或者其他框架的,其实看了后面的和laravel框架对接的课程,再去对接其他框架,它的流程都是差不多的。

项目结构

先进入自己的项目文件夹中,新建一个laravel项目,名字就叫做laravel_worker

laravel new laravel_worker

phpstorm打开后,在laravel_worker中新建一个socket文件夹。然后把GatewayWorker在复制到socket文件夹中。

其实laravelGatewayWorker是两个独立,互不干扰的项目。所以你可以把这个两个项目单独放在两个路径。也可以像我这样,为了开发方便,把GatewayWorker丢在laravel里新建的socket文件夹中。

大致流程就是,正常web请求依然都是由laravel来负责的。只有当需要主动推送数据给前端的时候。就在laravel中调用gateway的接口,然后通过gateway推送给前端。

好,我们后面几集的内容,就是把一个聊天室的功能,通过laravelGatewayWorker不断的完善下去,它功能稍微有一点复杂。不过这节课的内容不多,主要是一些前期基础的准备工作。

登录注册

先去数据库,新建一个叫做laravel_worker的数据库,编码选择utf8mb4。接着配置下你自己的.env文件,修改成自己的mysql账号密码。

DB_DATABASE=laravel_worker
DB_USERNAME=root
DB_PASSWORD=

然后跑一下以下命令

php artisan migrate
php artisan make:auth
php artisan serve

如果你之前已经学过了Laravel技巧库,那你一定知道我们刚才在做什么了,其实就是已经实现了登录注册所有的功能了。

最后一个命令是启动服务,然后我们通过http://localhost:8000访问以下,注册三个新用户。

用户头像

接着到app/user.php中,添加一个方法,这里还是通过邮箱,调用了gravatar上的头像。

 /**
 * 用户头像
 * @return mixed|string
 */
public function avatar()
{
    return "https://www.gravatar.com/avatar/" . md5(strtolower($this->email)) . "?d=retro&s=64";
}

如果你对这里不太清楚,可以参考下超简单的Laravel新手入门教程中的第12回,添加评论

聊天记录表

用户的聊天记录呢,我们新建一个messages表保存数据。

php artisan make:model Message -m

这样就有了Message这个模型,和一个migration文件。打开migration文件后,修改一下up方法

public function up()
{
    Schema::create('messages', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id');
        $table->integer('room_id')->nullable();
        $table->text('content');
        $table->timestamps();
    });
}

运行一下迁移

php artisan migrate

这样数据库中,就有个messages这张表了。这张表的是为了保存用户发表的历史聊天记录用的。暂时先不用关注它。

GatewayClient

使用laravel调用GatewayWorker的接口,需要用到GatewayClient这个composer包。开一个新的命令行,进入laravel的项目目录

composer require workerman/gatewayclient

要做的基础准备工作就是这么多了。