Ratchet
配套媒体
本页对应的 PPT 与演示视频
下载没反应?点这里复制直链
侧边栏预览窗口(Electron webview)会拦截下载,把下面的链接复制到 Chrome / Edge 地址栏打开即可保存。
../../ratchet-recommend.pptx../../ratchet-recommend.mp4本文目录
🔥 Ratchet:PHP WebSocket 异步服务库,6.4k Stars 的经典之作
无需依赖额外 PHP 扩展,兼容 PHP 5.4 到 PHP 8+,用简单接口构建实时双向通信应用。

🚀 什么是 Ratchet?
Ratchet 是一个用于异步服务 WebSocket 的 PHP 库。它让你通过简单易用的接口构建实时应用,且无需修改代码即可通过组合不同组件复用应用。
项目支持 PHP 5.4 到 PHP 8+ 版本,不依赖额外 PHP 扩展,兼容多平台。无论是聊天室、实时通知、多人协作编辑,还是在线游戏,Ratchet 都能提供稳定可靠的 WebSocket 服务能力。
核心定位:零扩展依赖的 PHP WebSocket 解决方案,组合式架构让应用复用零成本
✨ 核心功能一览

🛠️ 快速上手:5 分钟跑通 WebSocket 服务
安装
# 通过 Composer 安装(推荐方式)
composer require cboden/ratchet:^0.4.4
版本说明:最新稳定版为
v0.4.4(2021年12月发布),支持 PHP 8+。项目目前正在复苏维护中,详见 ticket #1054。
最小聊天服务示例
服务端(chat.php):
<?php
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
require __DIR__ . '/vendor/autoload.php';
/**
* 聊天消息广播组件
* 将收到的消息发送给所有连接的客户端(发送者除外)
*/
class MyChat implements MessageComponentInterface {
protected $clients;
public function __construct() {
$this->clients = new \SplObjectStorage;
}
public function onOpen(ConnectionInterface $conn) {
$this->clients->attach($conn);
echo "新连接: {$conn->resourceId}\n";
}
public function onMessage(ConnectionInterface $from, $msg) {
foreach ($this->clients as $client) {
if ($from != $client) {
$client->send($msg);
}
}
}
public function onClose(ConnectionInterface $conn) {
$this->clients->detach($conn);
echo "连接关闭: {$conn->resourceId}\n";
}
public function onError(ConnectionInterface $conn, \Exception $e) {
echo "错误: {$e->getMessage()}\n";
$conn->close();
}
}
// 在 8080 端口启动 WebSocket 服务
$app = new Ratchet\App('localhost', 8080);
$app->route('/chat', new MyChat, ['*']);
$app->route('/echo', new Ratchet\Server\EchoServer, ['*']);
$app->run();
运行服务:
php chat.php
浏览器端(JavaScript):
// 连接 WebSocket 服务
var conn = new WebSocket('ws://localhost:8080/echo');
conn.onopen = function(e) {
console.log('连接成功!');
conn.send('Hello WebSocket!');
};
conn.onmessage = function(e) {
console.log('收到消息:', e.data);
};
conn.onclose = function(e) {
console.log('连接关闭');
};
注意:生产环境建议使用 80 或 443 端口(避免被代理/防火墙拦截),需要 root 权限,可通过反向代理实现
📊 与竞品对比

💡 适用场景
场景 1:实时聊天室
功能说明:Ratchet 最核心的应用场景。通过 MessageComponentInterface 接口,只需实现 4 个方法(onOpen、onMessage、onClose、onError),即可构建完整的多人聊天系统。
输入要求:客户端通过 WebSocket 发送文本消息
输出效果:所有其他在线用户实时收到消息
适用场景:
- 在线客服系统
- 多人协作白板
- 实时评论区
场景 2:实时数据推送(股票/监控)
功能说明:服务端主动推送数据给客户端,无需客户端轮询。结合 ReactPHP 的事件循环,可实现定时推送或事件触发推送。
输入要求:服务端数据源(数据库、API、消息队列)
输出效果:客户端实时接收数据更新通知
适用场景:
- 股票行情推送
- 服务器监控告警
- 物联网设备状态更新
场景 3:多房间/多主题订阅
功能说明:Ratchet 支持路由($app->route()),可以为不同路径绑定不同组件,实现房间隔离或主题订阅。
输入要求:客户端连接时指定房间/主题路径(如 ws://localhost:8080/room/123)
输出效果:消息仅在同房间/主题内广播
适用场景:
- 多人在线游戏
- 直播弹幕系统
- 在线教育白板
用户群体总结
- ✅ PHP 开发者:已有 PHP 技术栈,快速添加 WebSocket 能力(推荐指数:⭐⭐⭐⭐⭐)
- ✅ 实时通信需求者:聊天、推送、协同类应用
- ✅ 轻量级应用:不想引入 Node.js 技术栈的项目
- ❌ 超高性能需求:百万级并发建议使用 Go/Node.js 方案
- ❌ 需要 MQTT 协议:Ratchet 仅支持 WebSocket,如需 MQTT 请选其他方案
💰 开源协议
开源协议: MIT
💡 完全免费:MIT 协议,可商用,无限制!
🎯 总结
Ratchet 是 PHP 生态中最成熟的 WebSocket 库之一,6.4k Stars 和 792 Forks 证明了它的稳定性和社区认可度。
推荐指数: ⭐⭐⭐⭐
适合人群: 已有 PHP 技术栈的开发者、需要快速搭建实时通信能力的团队
立即体验: Ratchet 官网
GitHub 仓库: ratchetphp/Ratchet
示例项目: Ratchet Examples
数据截至 2026-05-23,最新信息请以官网为准。