为了保证系统流畅运行,建议服务器配置不低于:
- CPU:2 核
- 内存:2 GB 及以上
- 操作系统:CentOS 7+ / Ubuntu 20.04+ / Debian 11+
| 组件 | 版本要求 | 说明 |
|---|---|---|
| PHP | >= 8.0.2 |
需开启 fileinfo, openssl, mysqli 等扩展 |
| MySQL | >= 5.7 |
建议使用 MySQL 5.7 或 MariaDB 10.3+ |
| Node.js | >= 16.0 |
用于运行 WebSocket 信令服务 |
| Nginx/Apache | 最新版 | 推荐使用 Nginx 以获得更好的并发性能 |
** 推荐工具**:强烈建议使用 宝塔面板 (BT Panel) 进行服务器管理,可简化环境安装和站点配置过程
- 下载项目源码包(
.zip或.rar)。 - 将源码上传至服务器网站根目录(如
/www/wwwroot/your_domain)。 - 解压文件,确保
index.php等文件位于根目录下,而不是子文件夹中。
WebSocket 服务依赖 Node.js 环境。请在项目根目录下打开终端(或通过宝塔的终端功能),执行以下命令:
-
初始化环境(如果尚未安装 Node.js,请在宝塔软件商店安装):
# 检查 Node 版本 node -v npm -v -
安装依赖库: 根据
package.json配置,执行安装命令:cd /www/wwwroot/your_domain # 进入项目目录 npm install
涉及依赖:
ws,express,axios,dotenv等。
为了让前端能通过域名连接 WebSocket 服务,需在 Nginx 中配置反向代理。
Nginx 配置示例:
在您的站点配置文件 server 块中添加以下 location(若设置WebSocket 服务运行在 8080 端口):
# WebSocket 反向代理配置
location /ws/ {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}建议使用 PM2 进程管理工具来守护 Node.js 进程,防止服务意外退出。
-
安装 PM2:
npm install pm2 -g
-
启动服务:
# 在项目根目录执行 pm2 start server.js --name "Chat-WS-Server"
-
设置开机自启:
pm2 startup pm2 save
- 在浏览器访问您的域名,并加上
/install/路径:http://your_domain/install/ - 根据页面提示,填写数据库连接信息(数据库名、用户名、密码)。
- 点击“安装”,等待系统自动初始化数据表。
- 安装完成后,系统会自动跳转至后台登录页。
- 默认账号:
admin - 默认密码:
admin123
- 默认账号:
- 登录后,找到 “站点配置” -> “WebSocket 配置”。
- 修改 “WebSocket 连接地址”:
- 如果您配置了 Nginx 反向代理,请填写:
ws://your_domain/ws/(如果是 HTTPS 网站,请使用wss://)。 - 确保此地址与前端连接地址一致,否则无法收发消息。
- 如果您配置了 Nginx 反向代理,请填写:
为了保障项目安全运行,请配置以下规则。
防止 .env 等配置文件泄露。
Apache (.htaccess):
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
<FilesMatch "\.(env|git|log)$">
Require all denied
</FilesMatch>Nginx:
error_page 404 /404.html;
error_page 403 /403.html;
location ~* \.(env|git|log)$ {
return 403;
}- 安全组端口放行:在云服务商(如阿里云、腾讯云)的控制台,除了放行
80(HTTP) 和443(HTTPS) 端口,务必检查并放行22(SSH) 端口。如果你的 WebSocket 服务(Node.js)是直接通过 IP:端口访问的,还需要放行对应的端口(如8080)。 - 内存不足风险:项目包含 PHP 和 Node.js 两个后端服务,2G 内存是最低要求。在编译安装软件或运行大型任务时,可能会因内存不足导致进程被系统强制终止。建议配置 Swap 虚拟内存或升级服务器配置。
- PHP 扩展缺失:安装好 PHP 后,很多扩展默认是关闭的。请在宝塔面板的 PHP 管理界面,手动开启
fileinfo、openssl、mysqli等扩展。特别是fileinfo,如果未开启,会导致文件上传功能报错。 - PHP 禁用函数:检查 PHP 的“禁用函数”列表,确保
proc_open、putenv等函数没有被禁用,否则可能导致部分功能异常。 - Node.js 版本不兼容:不要盲目追求最新版 Node.js。请严格按照文档要求安装
>= 16.0的版本(推荐 16.x 或 18.x),版本过高或过低都可能导致npm install安装依赖失败。 - Nginx vs Apache:强烈推荐使用 Nginx。Apache 对 WebSocket 的支持不如 Nginx 稳定和高效,在高并发场景下容易出现问题。
- 文件路径错误:解压源码后,请确保
index.php、server.js等核心文件直接位于网站根目录下,而不是在根目录的子文件夹里。 - 目录权限问题:部署后如果出现 500 错误或无法上传文件,90% 是权限问题。务必通过终端执行命令,将网站目录的所有者设置为
www,并为runtime、storage、public/uploads等需要写入的目录赋予755或777权限。chown -R www:www /www/wwwroot/your_domain chmod -R 755 /www/wwwroot/your_domain
- 依赖安装失败:执行
npm install时,如果速度极慢或报错,通常是网络问题。请先执行npm config set registry https://registry.npmmirror.com切换到国内镜像源,然后再尝试安装。 - 服务未守护:不要直接用
node server.js启动服务,这样关闭终端后服务就会停止。必须使用pm2等进程管理工具来启动和守护 Node.js 进程,并设置开机自启。 - Nginx 配置遗漏:在 Nginx 中配置 WebSocket 反向代理时,以下三行配置是核心,缺一不可,否则无法建立连接:
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade";
这是最容易混淆和出错的地方,请严格对照:
- 情况 A:网站是 HTTP
- 前端 JS 连接地址:
ws://your_domain/ws/ - Nginx 配置:正常配置反向代理到
http://127.0.0.1:8080
- 前端 JS 连接地址:
- 情况 B:网站是 HTTPS (已安装 SSL 证书)
- 翻车点:前端 JS 连接地址必须是
wss://your_domain/ws/。如果仍然使用ws://,浏览器会因“混合内容”安全策略而阻止连接。 - Nginx 配置:Nginx 负责处理外部的 HTTPS/WSS 请求,然后内部转发给 Node.js。因此,Nginx 配置中的
proxy_pass仍然是http://127.0.0.1:8080。Node.js 服务本身不需要配置 SSL。
- 翻车点:前端 JS 连接地址必须是
- 数据库连接失败:在安装向导页面,如果提示无法连接数据库,请检查:
- 数据库用户名、密码、数据库名是否填写正确。
- 数据库服务是否已启动。
- 后台地址不一致:安装完成后,登录后台修改“WebSocket 连接地址”时,必须与前端实际使用的地址(
ws://或wss://)完全一致,并且路径(如/ws/)要与 Nginx 配置中的location匹配。
- 基础聊天:支持一对一私聊与群组聊天,提供流畅的文本消息收发体验。
- 多媒体消息:支持发送图片、文件、音乐、视频等多种格式内容,丰富沟通形式。
- 语音/视频通话:内置一对一实时音视频通话功能,让沟通更近一步。
- 消息管理:支持消息撤回、引用回复、批量删除、聊天记录搜索及导出为证据包。
- 状态反馈:提供“正在输入...”状态提示与消息已读/未读回执功能。
- 好友与群组:完善的好友管理(添加、备注、分组、删除)与群组功能(创建、邀请、公告、管理)。
- 红包系统:支持在群聊中发送拼手气红包和平均红包,增加互动趣味性。
- 礼物与亲密度:可向好友赠送虚拟礼物,提升双方亲密度,并解锁专属关系标识。
- 朋友圈:内置社交圈功能,用户可以分享动态,与好友互动。
- 活动中心:集成签到、CDK兑换、信用借款等运营活动,提升用户活跃度。
- 内置游戏:提供猜数字、掷骰子、21点等多款轻量级休闲游戏,支持G币下注娱乐。
- G币系统:平台内嵌虚拟货币“G币”,可用于游戏、红包、借款等多种场景。
- 文件管理:支持个人文件与群文件上传、下载、分享与管理,采用分片上传技术保障大文件传输稳定性。
- 视频解析:支持解析抖音、B站等平台的视频链接,可直接在应用内预览并分享视频卡片。
- 音乐分享:集成网易云音乐搜索与试听功能,可将歌曲卡片分享给好友,支持30秒片段试听。
- 邮件系统:内置应用内邮件功能,支持收发、标记已读、删除等操作,方便接收系统通知。
- 多主题皮肤:提供现代简约、深邃暗夜、赛博朋克、樱花和风、海洋之心等多种主题,一键切换整体视觉风格。
- 动态背景:支持粒子星空、海浪波纹、毛玻璃等多种动态聊天背景,打造沉浸式视觉体验。
- 气泡与字体:可自定义聊天气泡形状(如iMessage风格、漫画风格)及字体方案,调整字号大小。
- 字体颜色:提供多种字体颜色方案,包括纯黑、暖棕、柔和灰等,满足不同阅读偏好。
- 消息上锁:为私密对话提供额外保护,支持多种防护模式:
- 密码防护:接收方需回答预设问题才能查看消息。
- 时间防护:消息仅在指定时间内可读,过期自动失效。
- 阅后即焚:消息被查看后,在设定时间内自动销毁。
- 数据防篡改:采用哈希链(Hash Chain)技术,确保聊天记录在本地存储的完整性与不可篡改性。
- 账号安全:支持账号注销、异地登录检测与强制下线。
- 多端同步:支持离线消息同步,确保消息不丢失。
- 消息翻译:内置多语言翻译功能,打破沟通障碍。
- 桌面通知:支持浏览器桌面通知与新消息提示音。
- 截图工具:集成快捷截图功能,方便信息分享。
- 亲密度养成系统
- 情感量化:系统会根据互动频率自动计算亲密度数值,并划分“陌生人”、“认识”、“朋友”、“挚友”、“死党”等情感等级。
- 专属称呼:当亲密度达到 500 点时,双方可解锁“关系称呼”功能,自定义彼此的专属昵称(如“宝贝”、“老铁”),彰显独特关系。
- 私密树洞
- 悄悄话:提供一个仅限双方可见的留言板块,支持选择心情图标(晴、雨、雪等)。
- 时光筛选:支持按日期范围筛选历史留言,方便回顾特定时刻的心情记录。
- 回忆时间线
- 里程碑记录:以可视化的河流时间轴形式,记录双方从“初识”到“现在”的重要时刻。
- 动态加载:支持无限滚动加载历史回忆节点,每个节点拥有独立的配色和图标,极具纪念意义。
- 关系数据看板
- 核心指标:首页直观展示“相识天数”、“互发消息总数”及当前“亲密度数值”。
- 实时统计:消息数量通过 IndexedDB 本地数据库实时统计,确保数据准确且加载迅速。
- 网易云音乐深度集成
- 全局播放器:底部常驻音乐播放栏,支持播放/暂停、进度拖拽、音量调节。
- 歌词与搜索:内置音乐抽屉,支持关键词搜索歌曲,实时显示歌词(通过API解析),支持同步网易云音乐数据。
- 卡片分享:支持将歌曲以精美卡片的形式发送给好友,点击即可在应用内直接试听。
- 内置休闲游戏大厅
- 游戏种类:集成猜数字、掷骰子、21点等多款经典休闲游戏。
- 博弈系统:支持使用平台虚拟货币“G币”进行下注娱乐,增加游戏刺激性。
- 实时对战:基于 WebSocket 长连接,支持邀请好友进行实时在线对战,低延迟互动。
- 富文本发布
- Markdown 支持:发布动态时支持 Markdown 语法,可快捷插入图片
![]()、超链接[]()、话题#和提及@。 - 地理位置:支持添加位置信息,记录足迹。
- Markdown 支持:发布动态时支持 Markdown 语法,可快捷插入图片
- 隐私权限管理
- 分级可见:发布时可设置“公开”、“好友可见”或“仅自己可见”。
- 动态管理:支持对已发布的动态进行删除或修改可见范围,操作即时生效。
- 互动与通知
- 点赞与评论:支持对动态进行点赞和评论,支持回复特定评论(@回复)。
- 树状展示:评论区采用树状结构展示,清晰呈现回复逻辑。
- 图片预览:动态内的图片支持懒加载和错误重试机制,提供流畅的浏览体验。
- 智能定时消息
- 灵活调度:支持设置单次发送,或按“每天”、“每周”、“每月”循环发送。
- 周几选择:在“每周”模式下,可精确勾选周一到周日的具体发送日期。
- 管理后台:提供可视化的定时消息列表,支持随时查看、取消或编辑待发送任务。
- 视频/链接解析
- 全网解析:支持解析抖音、B站等主流平台的视频链接。
- 卡片化展示:解析后自动生成视频卡片,包含封面和标题,点击即可在应用内预览,无需跳转第三方应用。
- 应用内邮件系统
- 系统通知:用于接收系统公告、活动通知等重要信息。
- 基础操作:支持邮件的收发、标记已读、删除等常规管理操作。
graph TD
subgraph "服务端/入口层"
PHP[chat.php<br/>核心单页/鉴权/HTML骨架]
WS_Server[WebSocket Server]
API[REST API /api/]
end
subgraph "全局基础设施层"
Auth[authwrite.js<br/>授权鉴权类]
Libs[sweetalert2/html2canvas/translate.js]
GlobalState[appState<br/>全局状态对象]
IDB[(IndexedDB<br/>本地消息存储)]
Utils[index.js<br/>工具函数/哈希链/搜索/右键菜单]
end
subgraph "核心引擎层"
Init[init.js<br/>应用初始化/WS连接/消息路由]
Settings[settings.js<br/>设置管理]
Tranuse[tranuse.js<br/>群聊插件/公告]
Friend[friend.js<br/>好友管理]
Contman[contman.js<br/>联系人渲染]
Mail[mail.js<br/>站内信]
end
subgraph "功能扩展层 (OTRP系列)"
OTRP1[otrp1.js<br/>通用UI/锁屏]
OTRP2[otrp2-files.js<br/>文件通道GFL2]
OTRP3[otrp3-person.js<br/>个人信息面板]
OTRP4[otrp4-gifts.js<br/>礼物系统]
OTRP5[otrp5-music.js<br/>音乐分享]
OTRP6[otrp6-video.js<br/>视频分享]
OTRP7[otrp7-activity.js<br/>活动中心]
OTRP8[otrp8-game.js<br/>游戏大厅]
OTRP9[otrp9-redpacket.js<br/>红包系统]
OTRP10[otrp10-fileupload.js<br/>文件上传GFL3]
OTRP11[otrp11-groupfile.js<br/>群文件管理]
end
subgraph "独立引擎层"
VideoEngine[videoengine.js<br/>视频播放器引擎]
GiftsEngine[giftsengine.js<br/>礼物动画引擎]
Stats[stats.js<br/>游戏统计模块]
RemoteVideo[remotevideo.js<br/>音视频通话]
Scheduled[scheduled-message.js<br/>定时消息]
Customized[customized.js<br/>个性化定制]
end
%% 加载与依赖关系
PHP -->|内联Script定义| GlobalState
PHP -->|script src| Auth
PHP -->|script src| Libs
PHP -->|ES Module Import| VideoEngine
PHP -->|ES Module Import| GiftsEngine
PHP -->|ES Module Import| Stats
PHP -->|script src 顺序加载| Init
PHP -->|script src| Settings
PHP -->|script src| Tranuse
PHP -->|script src| Friend
PHP -->|script src| Mail
PHP -->|script src| Contman
PHP -->|script src| RemoteVideo
PHP -->|script src| Scheduled
PHP -->|script src| Customized
PHP -->|script src| OTRP1
PHP -->|script src| OTRP2
PHP -->|script src| OTRP3
PHP -->|script src| OTRP4
PHP -->|script src| OTRP5
PHP -->|script src| OTRP6
PHP -->|script src| OTRP7
PHP -->|script src| OTRP8
PHP -->|script src| OTRP9
PHP -->|script src| OTRP10
PHP -->|script src| OTRP11
%% 运行时调用关系
Init -->|读写| GlobalState
Init -->|读写| IDB
Init -->|双向通信| WS_Server
Init -->|调用| Utils
Init -->|触发| Contman
Init -->|触发| Friend
Init -->|触发| Tranuse
Utils -->|提供基础能力| Init
Utils -->|提供基础能力| OTRP1
Utils -->|提供基础能力| OTRP2
Utils -->|提供基础能力| OTRP9
OTRP4 -->|调用| GiftsEngine
OTRP6 -->|调用| VideoEngine
OTRP8 -->|调用| Stats
OTRP8 -->|BroadcastChannel| Init
RemoteVideo -->|调用| WS_Server
Scheduled -->|调用| API
Customized -->|调用| API
Settings -.->|配置影响| Init
Settings -.->|配置影响| RemoteVideo
- chat.php: 系统核心。负责服务端鉴权(Cookie/Token解密)、环境变量注入(WS地址、用户ID)、HTML骨架渲染、CSS样式定义以及所有JS模块的加载顺序控制。它通过
<script type="module">导入ES6引擎模块,并通过<script src>按顺序加载业务逻辑模块。 - index.js: 基础工具库。包含
appState全局状态对象、IndexedDB 初始化、哈希链(Hash Chain)消息完整性校验、翻译管理器、表情解析、右键菜单、批量删除、已读回执等底层能力 - init.js: 应用启动引擎。在
DOMContentLoaded时执行initApp(),建立 WebSocket 连接,处理心跳、重连、离线消息同步,并作为消息分发中枢将WS消息路由到各业务模块。 - settings.js: 设置管理器。管理主题、通知、隐私、聊天等配置的持久化(localStorage),并提供设置弹窗的UI交互
- contman.js: 联系人/会话列表渲染器。负责将
appState.contacts和appState.groups渲染为侧边栏列表,处理会话置顶、未读数、最后一条消息预览、隐藏空会话等逻辑。 - friend.js: 好友关系管理。处理添加好友、删除好友、拉黑、修改备注、分组、转赠G币、亲密度查看等好友专属操作。
- tranuse.js: 群聊增强插件。专门处理群公告的CRUD、群成员管理、群信息编辑、解散群聊等群特有逻辑。与
contman.js配合完成群会话的完整展示。 - mail.js: 站内信系统。独立于聊天之外的通知体系,支持收件箱、未读筛选、信件详情查看,通过抽屉式UI呈现。
- remotevideo.js: 音视频通话模块。基于 WebRTC 实现点对点视频/语音通话,依赖 WebSocket 进行信令交换(offer/answer/candidate),受
settings.js中的媒体设备权限配置影响。 - videoengine.js (ES Module): 视频播放引擎。被
otrp6-video.js和消息渲染器调用,支持多源视频播放、iframe嵌入模式,提供统一的视频播放体验。 - giftsengine.js (ES Module): 礼物动画引擎。被
otrp4-gifts.js和聊天消息中的礼物卡片调用,负责全屏礼物特效的渲染与播放。 - stats.js (ES Module): 游戏统计模块。提供
YhMokTTCreateStatsModule和YhMokTTisWithin180s等函数,被otrp8-game.js用于游戏数据记录和防作弊时间校验。
- otrp1.js: 通用UI增强。包含消息上锁(密码/时间/阅后即焚)的完整逻辑、锁屏弹窗、解锁验证、以及部分通用UI组件。
- otrp2-files.js: 文件通道二(GFL2)。处理通过外链发送文件的逻辑,包括URL校验、文件信息获取、安全过滤。
- otrp3-person.js: 个人信息面板。处理右侧边栏中个人资料卡片的动态更新、关系状态展示、相识天数计算等。
- otrp4-gifts.js: 礼物系统前端。对接
giftsengine.js,处理礼物选择、赠送请求、亲密度增加、礼物消息渲染。 - otrp5-music.js: 音乐分享组件。处理音乐搜索、试听、分享链接生成,消息中的音乐卡片内联播放。
- otrp6-video.js: 视频分享组件。处理短视频链接解析(抖音等平台)、视频预览、调用
videoengine.js播放。 - otrp7-activity.js: 活动中心。集成签到、CDK兑换、小游戏入口、G币借款等运营功能,与后端API频繁交互。
- otrp8-game.js: 游戏大厅。提供猜数字、掷骰子、21点等小游戏,通过
BroadcastChannel与主聊天窗口的WS连接桥接,实现游戏房间消息互通。 - otrp9-redpacket.js: 红包系统。处理拼手气/平均红包的创建、领取、记录查询,红包消息的特殊渲染。
- otrp10-fileupload.js: 文件上传GFL3。处理本地文件选择、分片上传、进度显示、上传完成后生成文件消息。
- otrp11-groupfile.js: 群文件管理。处理群文件的上传、列表展示、下载、删除,仅对群管理员开放部分权限。
- scheduled-message.js: 定时消息。允许用户预设消息内容和发送时间,通过后端API存储和触发,前端提供管理界面。
- customized.js: 个性化定制。处理聊天背景、气泡样式、字体大小等外观自定义设置的保存与应用。
- 加载顺序即依赖顺序:采用脚本顺序加载机制。
chat.php控制25个JS文件的加载次序:先基础设施(auth/libs/index),再核心引擎(init/settings),后业务插件(friend/mail/contman/tranuse),最后是功能扩展(otrp1-11) - 全局状态驱动:
appState(定义于index.js)是整个系统的单一数据源。WebSocket消息到达后由init.js更新appState,各UI模块(contman/friend/tranuse)监听状态变化或直接读取状态进行渲染。 - WebSocket 消息总线:
init.js中的handleWsMessage是消息分发中枢。它根据消息type字段将消息路由到对应的处理函数 - ES Module 与传统 Script 混用:三个纯引擎模块(videoengine/giftsengine/stats)使用 ES Module 导出,在
chat.php中通过import挂载到window对象上,供后续传统脚本模块调用 - 跨窗口通信桥接:
otrp8-game.js打开的游戏页面与主聊天窗口之间通过BroadcastChannel通信。init.js中的mokim_setupGameRoomBridge负责建立这个桥梁,将游戏页面的WS请求代理到主窗口的WebSocket连接上,避免重复建连。 - API 调用分层:直接的文件操作(上传/下载)走专用通道(GFL1/2/3);业务数据(好友/群/活动/红包)走
/api/REST接口;实时消息走 WebSocket - 插件化消息渲染:
renderMessages(index.js)是消息渲染的核心,但它通过检查window.mokim_renderRedPacketMessage、window.MokimMusicShare等全局函数来委托特定消息类型的渲染给对应的OTRP模块
- 基础协议: HTTP/HTTPS
- 数据格式: JSON (
application/json),部分文件上传接口使用multipart/form-data - 字符编码: UTF-8
系统采用双重验证机制,根据接口类型分为两类:
| 鉴权方式 | 适用场景 | 参数传递 | 说明 |
|---|---|---|---|
| 用户令牌 (Token) | 大部分业务接口 | Body: UserId / dfid |
加密后的用户ID或会话ID,需通过 TmdbaseauthdownyhoDecrypt 解密 |
| API Key | 内部服务调用/WS通知 | Header: X-API-Key |
服务端间通信密钥,配置于 .env |
| Cookie 登录态 | 文件上传/游戏/邮件等 | Cookie: {site_id}_log |
传统Session/Cookie验证方式 |
标准业务响应:
{
"success": true, // 或 "code": 200
"message": "操作成功", // 或 "msg": "success"
"data": { ... } // 业务数据载荷
}错误响应:
{
"success": false, // 或 "code": 400/401/500
"message": "错误描述" // 或 "error": "错误描述"
}- 路径:
/authsign/gettoken.php - 方法: GET/POST
- 说明: 获取CSRF Token、加密密钥及会话信息,仅限同源浏览器请求
- 响应:
{ signer, expire, csrft, encrypt_key, algorithm }
- 路径:
/validate-user/index.php - 方法: GET
- 鉴权: API Key
- 参数:
userId(Query) - 响应:
{ code: 200, data: true/false }
- 路径:
/user/profile.php - 方法: POST
- 参数:
{ user_id } - 响应:
{ id, username, uname, sayed, tximg, credit, spkcin, regtime, isban }
- 路径:
/user/updatebinfo.php - 方法: POST
- 参数:
{ user_id, uname?, username?, sayed?, bdmail?, tximg? } - 校验: 昵称≤30字,签名≤50字,头像URL≤200字符
- 路径:
/user/updatepass.php - 方法: POST
- 参数:
{ user_id, old_password, new_password } - 校验: 新密码≥6位,旧密码验证
- 路径:
/user/revoke.php - 方法: POST
- 参数:
{ user_id, confirm_action: true } - 说明: 永久删除联系人、邮件、群关系,群主权限自动转让,账号标记为已注销
| 操作 | 路径 | 方法 | 参数 |
|---|---|---|---|
| 获取设置 | /usettings/index.php |
GET | userId (Query) |
| 更新设置 | /usettings/update.php |
POST | { UserId, require_verify } |
- 路径:
/addcontact/index.php - 方法: POST
- 参数:
{ dfid(加密目标ID), UserId } - 响应: 用户信息 + 好友关系状态 (
isFriend,hasPendingRequest)
- 路径:
/addcontact/add.php - 方法: POST
- 参数:
{ dfid, UserId, verify_msg? } - 逻辑: 根据对方隐私设置自动通过或创建申请
| 操作 | 路径 | 核心参数 |
|---|---|---|
| 修改好友状态 | /friendmanage/index.php |
{ dfid, UserId, method } |
| 置顶/取消置顶 | /pinnedcontact/index.php |
{ dfid, UserId, Pinned, type(friend/group) } |
| 修改备注名 | /updatealias/index.php |
{ dfid, UserId, Alias } |
| 修改分组 | /updategrfname/index.php |
{ dfid, UserId, grname } |
| 朋友圈权限 | /update_moment_permission/index.php |
{ dfid, UserId, moment_permission(allow/deny) } |
- 路径:
/get-contacts/index.php - 方法: GET
- 鉴权: API Key
- 参数:
userId(Query) - 响应: 联系人数组(含亲密度、会话ID、置顶状态)
- 路径:
/urelations/index.php - 方法: GET/POST
- 鉴权: API Key
- 参数:
userId(可选)
| 操作 | 路径 | 方法 | 关键参数 |
|---|---|---|---|
| 创建群聊 | /creategroup/index.php |
POST | { group_name, group_desc?, UserId } |
| 解散群聊 | /destorygroup/index.php |
POST | { dfid, UserId } (仅群主) |
| 退出群聊 | /quitgroup/index.php |
POST | { dfid, UserId } |
| 更新群信息 | /updategroupinfo/index.php |
POST | { dfid, UserId, group_name?, group_desc?, need_verify?, group_settings? } |
| 修改群内备注 | /updatealiasg/index.php |
POST | { dfid, UserId, Alias } |
| 操作 | 路径 | 方法 | 说明 |
|---|---|---|---|
| 获取成员列表 | /group/members.php |
GET | groupId, killoryes(是否包含已移除) |
| 禁言成员 | /group_mute_member/index.php |
POST | { dfid, UserId, ban_until } |
| 接受入群邀请 | /accept_group_invite/index.php |
POST | { group_id, UserId } |
| 操作 | 路径 | 说明 |
|---|---|---|
| 搜索群聊 | /joingroup/index.php |
支持群号/ID/名称模糊搜索 |
| 申请加群 | /joingroup/join.php |
{ dfid, UserId, group_code, reason? } |
| 我的群列表 | /groups/index.php |
GET, userId (Query) |
| 操作 | 路径 | 权限 |
|---|---|---|
| 公告列表 | /groupannouncements/index.php |
群成员 |
| 公告详情 | /announcementdetail/index.php |
群成员 |
| 发布公告 | /publish_announcement/index.php |
群主/管理员 |
| 更新公告 | /announcement_update/index.php |
群主/管理员 |
| 删除公告 | /announcement_delete/index.php |
群主/管理员 |
| 置顶/取消 | /announcement_toggle_top/index.php |
群主/管理员 |
- 路径:
/grouplogs/index.php - 方法: POST
- 参数:
{ dfid, UserId, page?, page_size?, action? } - 权限: 群主可见IP+UA,管理员可见脱敏IP,普通成员仅见基础日志
| 操作 | 路径 | 方法 | 参数 |
|---|---|---|---|
| 保存 | /offline_message/index.php?action=save |
POST | { userId, senderId, conversationId, content... } |
| 获取 | /offline_message/index.php?action=get |
GET | userId |
| 删除 | /offline_message/index.php?action=delete |
POST | { messageIds[] } |
| 清理 | /offline_message/index.php?action=cleanup |
POST | 清理7天前已发送消息 |
| 操作 | 路径 | 方法 | 参数 |
|---|---|---|---|
| 添加 | /scheduled_message/index.php?action=add |
POST | { scheduleId, senderId, receiverId, content, scheduleTime, repeatType... } |
| 获取我的 | /scheduled_message/index.php?action=get |
GET | userId |
| 取消 | /scheduled_message/index.php?action=cancel |
POST | { scheduleId } |
| 更新下次执行 | /scheduled_message/index.php?action=update |
POST | { scheduleId, nextScheduleTime } |
| 标记完成/失败 | ...?action=complete/fail |
POST | { scheduleId, errorMsg? } |
| 加载待执行 | /scheduled_message/index.php?action=load |
GET | 服务端内部使用 |
- 路径:
/mailget/index.php - 方法: GET/POST
- 操作:
list: 获取收件箱 (type=inbox/unread)read: 标记已读 (id)delete: 删除邮件 (id)send: 发送邮件 ({ to_id, title, content })
- 路径:
/application/list/index.php - 方法: POST
- 参数:
{ UserId } - 响应:
{ friend_requests[], group_requests[] }
- 路径:
/application/handle/index.php - 方法: POST
- 参数:
{ UserId, request_id, app_type(1好友/2群聊), action(accept/reject), remark? } - 逻辑: 自动建立好友关系/群成员关系,发送系统邮件通知
- 路径:
/gcoinfec/index.php - 方法: POST
- 参数:
{ dfid(接收方), UserId, gcoin, gcointext? } - 校验: 余额充足、接收方信用分≥70
- 副作用: 写入小世界时间线、发送系统邮件
| 操作 | 路径 | 参数 |
|---|---|---|
| 创建红包 | /redpacket/create/index.php |
{ dfid, group_id, packet_no, total_amount, total_count, blessing?, type(1随机/2平均) } |
| 领取红包 | /redpacket/grab/index.php |
{ dfid, packet_id } |
| 红包详情 | /redpacket/detail/index.php |
{ dfid, packet_id } |
| 查询余额 | /redpacket/get_gcoin_balance/index.php |
{ dfid } |
| 操作 | 路径 | 参数 |
|---|---|---|
| 借贷状态 | /activity_loan/index.php |
{ action: "get_status", UserId } |
| 申请借款 | /activity_loan/index.php |
{ action: "apply", UserId, amount } |
| 还款 | /activity_loan/index.php |
{ action: "repay", UserId, amount } |
| 操作 | 路径 | 参数 |
|---|---|---|
| 签到状态 | /activity_checkin/index.php |
{ action: "checkin_status", UserId } |
| 执行签到 | /activity_checkin/index.php |
{ action: "do_checkin", UserId } |
| CDK兑换 | /activity_cdk/index.php |
{ action: "redeem", UserId, code } |
| CDK历史 | /activity_cdk/index.php |
{ action: "cdk_history", UserId } |
| 活动中心信息 | /activity_info/index.php |
{ action: "get_info", UserId } |
- 路径:
/gifts/index.php - 方法: POST
- 参数:
{ UserId, targetId, giftId } - 响应:
{ gift, newBalance, intimacyChange, newIntimacy, giftMessage }
- 路径:
/match_finish/f1.php - 方法: POST
- 鉴权: API Key
- 参数:
{ matchid, winner, loser, scores[], gameData{}, bet{} } - 逻辑: 结算G币、更新亲密度、写入小世界时间线
| 游戏 | 路径 | 参数 |
|---|---|---|
| 21点 | /game_sync/blackjack/index.php |
{ action, UserId, coins } |
| 掷骰子 | /game_sync/dice/index.php |
{ action, UserId, coins } |
| 猜数字 | /game_sync/guess/index.php |
{ action, UserId, coins } |
安全校验: 客户端与服务端G币差异超过500时拒绝同步
- 路径:
/game_status/index.php - 操作:
summary: 总胜场/负场/G币收益/最高连胜list: 分页战绩记录 (支持筛选)detail: 单场比赛详情
- 路径:
/timeline_more/index.php - 方法: POST
- 参数:
{ action: "get_timeline", user_id, target_id, offset, csrf_token } - 响应: 分页事件列表 (
events[],has_more)
- 路径:
/fileupload/index.php - 方法: POST (multipart/form-data)
- 操作列表:
| action | 说明 |
|---|---|
upload |
普通文件上传 |
upload_url |
从URL转存 |
presigned |
获取预签名上传URL |
initiate_multipart |
初始化分片上传 |
presigned_part_url |
获取分片预签名URL |
complete_multipart |
完成分片上传 |
abort_multipart |
取消分片上传 |
list |
列出对象 |
delete |
删除文件 |
get_download_url |
获取下载链接 |
- 路径:
/groupfiles/index.php - 操作:
list_group_files,delete_group_file,get_group_download_url+ 分片上传系列 - 权限: 删除需上传者/群主/管理员身份
- 路径:
/getfileinfo/index.php - 方法: POST
- 参数:
{ url, fileType(image/file) } - 响应:
{ fileName, fileSize, isBroken, contentType }
- 路径:
/videoparser/index.php - 方法: POST
- 参数:
{ url, platform(douyin/bilibili), ak } - 响应:
{ title, author, cover, video_url, duration }
| 操作 | 路径 | 参数 |
|---|---|---|
| 获取Cookie | /lanzou/get_cookie.php |
{ username, password } |
| 上传文件 | /lanzou/upload.php |
{ cookie } + file |
- 路径:
/wyymusic/index.php - 方法: POST
| 功能 | 参数 | 响应 |
|---|---|---|
| 搜索歌曲 | { keyword, ak } |
网易云原始搜索结果 |
| 获取播放链接 | { songId, ak } |
{ url } |
| 错误码 | 含义 |
|---|---|
| 200 | 成功 |
| 301/302 | 令牌验证失效 |
| 400 | 参数不完整/格式错误 |
| 401 | 未登录/无权访问 |
| 403 | 权限不足/非群成员 |
| 404 | 资源不存在 |
| 405 | 请求方法不允许 |
| 413 | 文件大小超限 |
| 500 | 服务器内部错误 |
mok_user, mok_contact, mok_group_chat, mok_group_member, mok_group_announcement, mok_group_log, mok_application, mok_mail, mok_offline_message, mok_scheduled_message, mok_redpacket, mok_redpacket_record, mok_loan, mok_checkin, mok_cdk, mok_cdk_usage, mok_intimacy, mok_smallworld_timeline, mok_match_record, mok_file_archive, mok_group_file, mok_user_traffic, mok_user_setting