干饭人摸鱼 即时通讯系统

基于 ThinkPHP 6 的私域 IM 社交平台,融合「今天吃什么」轻量生活工具。WebRTC 音视频通话 + Workerman WebSocket 实时信令,PC / H5 双端同步在线。

后端 ThinkPHP 6 实时 Workerman 4.1.17 音视频 WebRTC P2P 前端 原生 JS + jQuery
文档介绍 前往试用
核心模块
从注册鉴权到实时通信、音视频通话与后台运营,覆盖 IM 全场景。
👤

双账号体系

注册默认开启(后台可关),自动建立主号 + 小号双账号。相同账号、不同密码,进入不同账号体系。

User 控制器
🤝

好友管理

好友列表、待确认请求、邀请注册。添加/同意/拒绝/删除均通过 WS 实时推送,端到端状态自动同步。

实时无刷新
👥

群组管理

群组创建、搜索、加入、退出、解散、管理。群主不可退群,入群可设密码,解散同步清理成员与消息。

Group 控制器
💬

消息系统

私聊校验好友、群聊校验成员后落库。支持 text / image / file / voice(1-60s) / video。未读标记、文件上传白名单。

Chat 控制器

实时通信

WS 服务端统一处理连接、心跳、私聊/群聊广播、在线状态、通话信令、好友通知、输入状态。

Workerman
📞

音视频通话

信令经 WS 中转,媒体流 P2P 直连,可配 TURN 兜底。通话记录、会话时长统计一应俱全。

WebRTC
🍱

今天吃什么

分时间段随机抽签并记录餐饮,查看「我的记录」。小号默认功能,无 IM 权限的账号也能用。

生活工具
🛠️

自动保护

关闭页面、切换页面到后台、甚至锁屏 都会自动退出到小号干饭人界面。

Admin 控制器
👥

阅后即焚

可设置多少秒后删除历史记录,关联图片音视频等文件一起删除

消息 控制器
界面预览
点击下方轮播查看核心界面
实时通信链路
HTTP 负责页面与落库,WebSocket 负责长连接与信令,两端协同保证消息不丢。
前端
页面加载建立 WS
login
绑定 userId ↔ clientId
WS 校验
好友/群成员
投递 / 广播
forwardToUser
HTTP 落库
rc_chat_logs

在线状态双来源

WS 进程将在线用户写入 runtime/ws_online.json,HTTP 应用层读取该文件 + Cache 合并,作为「在线」实时数据。

缓存主动失效

好友缓存 30s、群成员缓存 15s,均在 accept / remove / join / quit / 解散时主动失效,避免脏读导致「不是好友」「Not a group member」。

双账号体系
注册同一用户名会同时生成两个账号,按密码区分身份。

主号

密码自定义,可使用完整 IM 聊天能力。注册后随机生成 shareid 用于邀请推广;带 ?shareid= 注册会建立邀请关系并开通邀请者的 IM 权限。

小号

默认密码 123456,仅可使用「今天吃什么」轻量工具,无 IM 权限。不带邀请码的普通注册不会开通 IM 权限。

部署与运行
HTTP 随 Web 服务器自动生效;WebSocket 是独立常驻进程,改 Server.php 后必须重启。

Nginx 伪静态

location / {
    if (!-e $request_filename){
        rewrite ^(.*)$ /index.php?s=$1 last; break;
    }
}

启动 / 重启 WebSocket

REM 1. 找到占用 8282 的进程
netstat -ano | findstr :8282 | findstr LISTENING
REM 2. 终止旧进程(需管理员)
taskkill /F /PID <pid>
REM 3. 启动
php start_ws.php start

已提供 restart_ws.bat 一键脚本:右键「以管理员身份运行」即可(Windows 不支持 Workerman 的 stop/restart 守护模式)。