jin-chat 基于 EasySwoole 和 layim 的聊天系统 (重构 woann-chat)

声明

jin-chat 是基于EasySwoole与layim 的完整聊天应用

经https://github.com/woann/chat 作者同意, 用EasySwoole V3重构了全部服务端代码,在原功能的基础上增加了Token认证、Redis/mysql协程连接池、Task异步任务等新功能

  • 此项目是基于 EasySwoole V3 作为服务端,easySwoole是一款高度封装了swoole拓展而依旧保持swoole原有特性的一个高性能异步框架,旨在提供一个高效、快速、优雅的框架给php开发者。
    所以在此之前,你要熟悉 swoole、EasySwoole、、还有将他们完美结合的 EasySwoolehttps://www.easyswoole.com
  • 前端部分是采用 layui, 在此郑重说明,layui 中的 im 部分 layim 并不开源,仅供交流学习,请勿将此项目中的 layim 用作商业用途。
  • 本demo有助于了解EasySwoole的入门和websocket的在业务中的应用,代码没有经过正规的测试和封装,基本只达到实现功能而已,不可把服务端的逻辑用于生产环境。

地址

https://github.com/Double-Jin/jin-chat

各位点个星星吧

基础运行环境

  • 保证 PHP 版本大于等于 7.1
  • 保证 Swoole 拓展版本大于等于 4.3.0
  • 需要 pcntl 拓展的任意版本
  • 使用 Linux / FreeBSD / MacOS 这三类操作系统
  • 使用 Composer 作为依赖管理工具

功能列表

新功能:
  • Token认证
  • mysql协程连接池
  • Redis协程连接池
  • Task异步任务
  • 优化代码布局

原有功能
  • 登录 | 没什么好说的...

  • 注册 | 注册过程中为用户分配了一个默认分组,并将用户添加到所有人都在的一个群(10001)

  • 查找 - 添加好友 | 可以根据用户名、昵称、id 来查找,不输入内容则查找所有用户,点击发起好友申请

  • 查找 - 加入群 | 可根据群昵称、群 id 查找群聊,点击加入

  • 创建群 | 创建一个群聊

  • 消息盒子 | 用来接受好友请求和同意或拒绝好友请求的系统消息

  • 个性签名 | 并没有什么卵用的功能

  • 一对一聊天 | 可发送文字、表情、图片、文件、代码等

  • 群聊 | 新成员加入群聊时,如果此刻你正开启着该群对话框,将收到新人入群通知

  • 查看群成员

  • 临时会话 | 在群成员中,点击群成员头像即可发起临时会话

  • 历史记录 | 聊天面板只显示 20 条记录,更多记录点击聊天记录查看

  • 离线消息 | 对方不在线的时候,向对方发起好友请求或者消息,将在对方上线后第一时间推送

  • 换肤 | 这个是 layim 自带的东西。。

    安装

  • 执行安装命令 git clone https://github.com/Double-Jin/jin-chat.git 将项目克隆到本地

  • composer update

  • 导入 sql,项目根目录下有个 chat.sql 文件,将该 sql 文件导入数据库即可

  • 修改dev.php 文件,配置mysql/redis等参数

  • 配置nginx代理

    server {
    root /data/wwwroot/chat;
    server_name es-chat.cc;
    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header X-Real-IP $remote_addr;
        if (!-f $request_filename) {
             proxy_pass http://127.0.0.1:9501;
        }
    }
    }
  • 修改App\HttpController\index.php的index方法中的$hostName变量为当前域名ws地址

  • 运行 EasySwoole php easyswoole start

  • 此时访问 es-chat.cc 即可进入登录页面

  • 测试账号 test1 - test2 密码全是 123456,当然你也可以自行注册。

部分截图

图片

图片
chat
图片

图片

本作品采用《CC 协议》,转载必须注明作者和本文链接
未经允许禁止转载 -- 苦力小林,
本帖由系统于 4年前 自动加精
讨论数量: 14

请教一下,你的项目我运行了,但是群消息有的收不到,是什么情况啊

4年前 评论
Double-Jin (楼主) 4年前
walt-white (作者) 4年前
pangxianfei

安装后,不无法登陆。一直原地跳转。

4年前 评论
Double-Jin (楼主) 4年前

很不错的项目!!!已开箱使用!! :smiley: 点赞收藏素质二连!

4年前 评论
Double-Jin (楼主) 4年前
Harvoc (作者) 4年前

直接按教程来部署会报错,因为composer update 会更新到3.3最新版本的缘故。根据报错信息改了N处报错,就可以正常运行了。建议楼主git附上完整包,这样用户就不用根据报错去折腾了。

3年前 评论

WebSocketParser的decode方法需要优化下,如果是PING信息,不需要json_deocde,而是直接给前端返回PONG信息。

3年前 评论
Double-Jin (楼主) 3年前
apud (作者) 3年前

已经star了,这个DEMO可以算是easyswoole里面IM项目比较全面的了,根据自己的业务需求稍微优化改改就可以应用于生产项目了。感谢。

3年前 评论
Double-Jin (楼主) 3年前
apud (作者) 3年前

林哥 我这里运行的时候

file

file 这里报错是什么原因呀 之前都不会的

3年前 评论
Fell-boy 3年前
Magr (作者) 3年前
Fell-boy 3年前
Fell-boy 3年前
Magr (作者) 3年前

这位老哥,写的可以。点赞。就是没有添加全局异常处理,这个没关系。自己修改。哈哈。多学习。

3年前 评论
Double-Jin (楼主) 3年前

建议上传到码云。0.00kb!!!!

3年前 评论

你好,我的下载您的之后部署 页面样式有问题,css导入了,项目没有报错,就是样式少了,从码云过来的

3年前 评论
Double-Jin (楼主) 3年前
qq727366586 (作者) 3年前

楼主你好 我下来部署启动后 提示我redispool pool is empty 请问你开发中有遇到过这问题吗

3年前 评论
Double-Jin (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!