基于PHP7.4+WebSocket构建的微信风格实时聊天系统,支持MySQL永久存储与无数据库临时会话双模式,提供群聊/私聊、多媒体消息、智能时间轴、消息已读追踪等功能,响应式设计适配移动端,开箱即用,适合快速搭建企业内网或社交聊天应用。
PHP全开源H5实时聊天室源码(支持数据库/无数据库双模式)
微信风格实时聊天系统
基于PHP+WebSocket+MySQL构建,支持群聊/私聊、消息历史、多媒体传输等核心功能,采用响应式设计适配移动端。
核心功能特性
- 双模式存储:支持MySQL数据库存储(永久消息历史)与无数据库模式(临时会话)
- 实时交互:群聊/私聊即时消息推送,消息已读状态追踪
- 多媒体支持:文本/图片/视频消息发送,智能时间显示(今日消息仅显示HH:MM,历史消息显示完整日期时间)
- 用户体验优化:无白屏自动加载聊天记录,私聊会话本地存储(刷新自动恢复),用户自定义颜色系统
- 在线状态管理:实时在线用户列表,智能设备适配(移动端响应式设计)
环境要求
- PHP 7.4+(需启用pdo_mysql扩展)
- MySQL 5.7+(仅数据库模式需要)
- 支持WebSocket的现代浏览器(Chrome/Firefox/Safari/Edge)
- Apache 2.4+ 或 Nginx 1.18+(需配置WebSocket代理)
安装部署指南
1. 数据库配置(可选)
sql
CREATE DATABASE chat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql -u root -p chat < chat.sql
修改core/db.php配置:
php
$dbConfig = [
'host' => 'localhost',
'dbname' => 'chat',
'username' => 'root',
'password' => 'your_password',
'charset' => 'utf8mb4'
];
2. 服务启动
bash
# 启动WebSocket服务器(默认8080端口)
php ws_server.php
# 启动Web服务(内置服务器示例)
php -S localhost:8000
3. Nginx生产配置示例
nginx
location /ws {
proxy_pass http://127.0.0.1:8443;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 600s;
}
操作说明
- 首次访问需设置用户名及主题颜色,系统自动生成6位数字用户ID
- 群聊/私聊切换通过左侧用户列表操作,私聊会话自动本地存储
- 媒体文件上传需确保
media/目录有写入权限 - 消息时间轴智能显示规则:今日消息仅显示时间,历史消息显示完整日期时间
运维注意事项
- 生产环境必须配置SSL证书(WebSocket over TLS)
- 定期清理数据库过期数据(建议设置自动清理任务)
- 媒体文件目录需配置防爆目录(限制文件类型及大小)
- 高并发场景建议使用Redis做会话存储优化
本系统实现核心聊天功能的同时,通过双模式存储适配不同场景需求,结合WebSocket实现毫秒级消息推送,配合智能时间显示与会话管理机制,提供接近原生应用的用户体验。


