Composer怎么安装Ratchet库 WebSocket服务搭建教程【实操】

发布时间 - 2026-02-02 00:00:00    点击率:
Ratchet 已停止维护,Composer 安装 ratchet/ratchet 会失败或引发严重兼容问题(PHP 8+、ReactPHP v1.0+、symfony/event-dispatcher v6+ 等均不兼容),新项目不应使用。

直接说结论:Ratchet 已停止维护,Composer 安装 ratchet/ratchet 会失败或引入严重兼容问题(PHP 8+、ReactPHP v1.0+、symfony/event-dispatcher v6+ 等均不兼容),不建议新项目使用。

为什么 composer require ratchet/ratchet 现在大概率报错

Ratchet 最后一个稳定版是 v0.4.4(2025 年发布),依赖已过时的 react/react v0.4–v0.7、guzzlehttp/streams(已废弃)、cboden/ratchet 命名空间与新版 PSR-14/PSR-15 冲突。Composer 会因依赖冲突拒绝安装,典型错误包括:

  • Conclusion: don't install ratchet/ratchet v0.4.4
  • Root composer.json requires ratchet/ratchet ^0.4.4 -> satisfiable by ratchet/ratchet[v0.4.4] + but these conflict with your requirements
  • PHP 8.1+ 下 ext-libevent 扩展缺失导致 React\EventLoop\ExtEventLoop 类找不到

替代方案:用 textalk/websocketamphp/websocket-server 快速启动 WebSocket 服务

如果只是需要轻量、可运行的 WebSocket 服务(如实时日志推送、简单聊天原型),推荐以下两个现代、活跃维护的选项:

  • textalk/websocket:纯 PHP 实现,无扩展依赖,适合开发/测试环境。安装命令:composer require textalk/websocket。启动服务只需几行代码,监听 ws://localhost:8000,支持 onOpen/onMessage 回调。
  • amphp/websocket-server:基于 Amp 异步生态,性能更好,支持 TLS、多 worker、连接限流。安装:composer require amphp/websocket-server amphp/byte-stream。需 PH

    P 8.0+,启动时用 Amp\Socket\Server 绑定端口,WebSocket 协议由 Websocket\Server 自动处理。

两者都不需要 ext-eventext-libevent,避免了 Ratchet 的扩展*问题。

如果必须跑旧 Ratchet 代码(如遗留系统)

只能降级环境并锁定依赖:

  • PHP 版本限制在 7.4(最高兼容到 7.4.33
  • composer.json 中强制指定旧版 React:"react/react": "v0.7.3""evenement/evenement": "v2.0.0""guzzlehttp/streams": "3.7.0"
  • 禁用 Composer 依赖自动升级:"minimum-stability": "stable" + "prefer-stable": true,否则 composer update 会破坏兼容链
  • 启动脚本必须用 php -S 配合 React\Http\Server 中间件,不能直接执行 vendor/bin/ratchet(该命令早已失效)

真正麻烦的不是安装命令,而是 Ratchet 把协议解析、事件循环、HTTP 升级全耦合在一起——现在没人再这么写了。用 amphpswoole 搭建 WebSocket,逻辑更清晰,出问题也容易定位。


# php  # react  # js  # json  # composer  # 端口  # websocket  # stream  # swoole  # 为什么  # symfony  # 中间件  # 命名空间  # require  # 循环  # Event  # 事件  # 异步  # http  # 等均  # 不兼容  # 都不  # 找不到  # 只需  # 没人  # 写了  # 不应  # 报错  # 绑定 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在云主机快速搭建网站站点?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何在建站之星网店版论坛获取技术支持?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  三星网站视频制作教程下载,三星w23网页如何全屏?  在线教育网站制作平台,山西立德教育官网?  Laravel如何实现API资源集合?(Resource Collection教程)  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel distinct去重查询_Laravel Eloquent去重方法  如何快速搭建二级域名独立网站?  Laravel如何处理CORS跨域请求?(配置示例)  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  JavaScript如何实现类型判断_typeof和instanceof有什么区别  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何在搬瓦工VPS快速搭建网站?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  canvas 画布在主流浏览器中的尺寸限制详细介绍  Laravel如何使用Service Container和依赖注入?(代码示例)  如何在阿里云虚拟服务器快速搭建网站?  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel如何自定义分页视图?(Pagination示例)  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  如何用狗爹虚拟主机快速搭建网站?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  如何在服务器上三步完成建站并提升流量?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  JS中对数组元素进行增删改移的方法总结  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何在香港服务器上快速搭建免备案网站?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何选择PHP开源工具快速搭建网站?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置