源码属性
    • 品牌Laravel
    • 语言PHP
    • 数据库Mysql
    • 付费限制 免费
    • 系统支持window
    • 规格整站源码
    • 演示地址
    • 安装服务
    APPle-system, BlinkMacSystemFont, "Segoe UI", Oxygen, Ubuntu, Roboto, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: rgb(68, 68, 68); text-wrap: wrap; background-color: rgb(255, 255, 255);" class=" list-paddingleft-2">
  • 基于 Laradock 本地开发环境进行演示和测试
  • 后端基于 Laravel 5.8 + LaravelS 扩展包引入对 Swoole 的支持
  • 基于 Swoole 提供的 WebSocket 服务器功能进行聊天通信
  • 结合 Swoole 的异步任务和协程机制提升系统响应速度和性能
  • 使用 Redis + MySQL 作为数据存储介质
  • 实现用户注册登录功能,登录后用户才可以进入聊天室
  • 支持文字 + 图片 + 表情 + 链接消息
  • 支持查看历史消息和离线消息
  • 支持与普通用户/机器人聊天
  • 前端基于 Vue.js 框架实现 UI,并且引入 Vuex、Vue-Router 实现前后端分离
  • 支持通过 Laravel Dusk 对项目进行自动化测试

最终实现的聊天室截图如下所示:

Laravel+Swoole 聊天室

整个项目的开发基于 Laradock,你可以参照这篇教程安装并初始化 Laradock:在 Mac/Windows 系统中使用 Laradock 搭建基于 Docker 的 Laravel 开发环境,当然你也可以选择其他集成开发环境,比如 Homestead、Valet、Laragon 等,不过本系列教程默认都是基于 Laradock,后续项目环境配置、工具安装、调试运行都是以 Laradock 为准,使用其他开发工具的请自行按照自己的环境进行调整。

完成 Laradock 的安装和环境初始化之后,需要在根目录下的 .env 文件中启用 NPM 相关配置:

1
WORKSPACE_INSTALL_NODE=true
2
WORKSPACE_NODE_VERSION=node
3
WORKSPACE_NPM_REGISTRY=http://registry.npm.taobao.org/

以及 Swoole 相关配置:

1
WORKSPACE_INSTALL_SWOOLE=true
2
...
3
PHP_FPM_INSTALL_SWOOLE=true

然后重新构建 workspace 和 php-fpm 镜像:

1
docker-compose build workspace php-fpm

让上述修改生效,并且在 workspace 和 php-fpm 容器中安装 Swoole 扩展。如果你还没有启动 Nginx、Redis、MySQL 的话,现在运行如下命令启动它们(后续教程假设它们都处于启动状态):

1
docker-compose up -d nginx mysql redis

项目初始化

注:以下操作你可以在本地进行(需要本地安装过 PHP、Composer、Node.js 等软件),也可以进入 workspace 容器指定目录下操作。

接下来,我们来安装并初始化聊天室项目 webchat, 由于我们在 .env 配置 APP_CODE_PATH_HOST 指向了与 laradock 同级的 wwwroot,所以我们可以在本地的 wwwroot 目录下通过 Composer 来创建这个项目:

1
composer create-project laravel/laravel webchat --prefer-dist -vvv

创建成功后,进入该项目目录,通过 Composer 安装 LaravelS 扩展包 ,以便快速在 Laravel 项目中使用 Swoole 提供的 API 进行编程,然后将该扩展包的配置文件和脚本文件发布到项目根目录下:

1
cd webchat
2
composer require hhxsv5/laravel-s
3
php artisan laravels publish

然后我们进入 workspace 容器运行 php bin/laravels start 启动 Swoole,验证 Swoole 环境是否就绪:

LaravelS

看到如上信息即表示 Swoole 运行环境是正常的。

接下来,由于我们后续有可能用到 Redis,所以先安装对应的扩展包:

1
composer require predis/predis

后端的环境配置先告一段落,我们接下来来到前端,运行 npm install 初始化前端依赖,初始化完成后执行如下命令安装 Vuex 和 Vue-Router:

1
npm install vuex vue-router --save-dev

这样,我们就完成了聊天室项目的所有初始化工作,如果后续开发过程中需要其他依赖我们在具体教程中再安装。

自动化测试

我们还可以为项目编写浏览器测试代码实现自动化测试,这可以通过 Laravel 框架提供的 Dusk 扩展包来实现,我们可以通过 Composer 来安装这个扩展包:

1
composer require --dev laravel/dusk

由于我们只需要在开发环境进行测试,所以加上了 --dev 选项。之后运行 php artisan dusk:install 在 tests 目录下初始化浏览器测试相关示例文件,该命令还会下载适配当前平台的 ChromeDriver 文件到扩展包的 bin 目录,这个时候可能会遇到网络问题导致下载失败:

不过由于 Dusk 扩展包已经自带了各个平台的 ChromeDriver 文件,所以可以忽略这个错误:

接下来,我们为项目设置虚拟域名 webchat.test,并且在 Laradock 根目录下的 nginx/sites 子目录中新增对应的虚拟主机配置 webchat.conf

1
server {
2

3
    listen 80;
4
    listen [::]:80;
5

6
    server_name webchat.test;
7
    root /var/www/webchat/public;
8
    index index.php index.html index.htm;
9

10
    location / {
11
         try_files $uri $uri/ /index.php$is_args$args;
12
    }
13

14
    location ~ \.php$ {
15
        try_files $uri /index.php =404;
16
        fastcgi_pass php-upstream;
17
        fastcgi_index index.php;
18
        fastcgi_buffers 16 16k;
19
        fastcgi_buffer_size 32k;
20
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
21
        #fixes timeouts
22
        fastcgi_read_timeout 600;
23
        include fastcgi_params;
24
    }
25

26
    location ~ /\.ht {
27
        deny all;
28
    }
29

30
    location /.well-known/acme-challenge/ {
31
        root /var/www/letsencrypt/;
32
        log_not_found off;
33
    }
34

35
    error_log /var/log/nginx/webchat_error.log;
36
    access_log /var/log/nginx/webchat_access.log;
37
}

然后在本地主机 /etc/hosts 中映射这个域名:

1
webchat.test 127.0.0.1

最后在 Laradock 根目录下重启 Nginx:

1
docker-compose up -d nginx

此时,我们已经可以通过 http://webchat.test 访问聊天室项目了。

回到 webchat 项目,在 .env 中修改 APP_URL 为我们配置的域名:

1
APP_URL=http://webchat.test

然后运行 php artisan dusk,测试通过,则表示我们的 Dusk 测试环境也是 OK 的:

Laravel Dusk

至此,我们已经完成聊天室项目开发环境、项目初始化和测试环境的准备工作,接下来就可以进行项目开发了。


① 本网站名称及网址:极客源码 | https://www.j42.cn。
② 本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你也有好源码或者教程,可以联系小编,有钻石奖励和额外收入。
⑤ 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 本站资源大多存储在云盘,如发现链接失效请 反馈我们会第一时间更新。
⑧ 邮箱:290621387@qq.com
极客源码 » 基于 Laravel + Swoole + Vue 搭建实时在线聊天室

发表评论

加载中~