10分钟搭建你的第一个PHP WebSocket服务器:bloatless/php-websocket快速入门教程
【免费下载链接】php-websocketSimple WebSocket server implemented in PHP.项目地址: https://gitcode.com/gh_mirrors/ph/php-websocket
想要用纯 PHP 搭建一个 WebSocket 服务器吗?bloatless/php-websocket是一个轻量级、无冗余的 PHP WebSocket 服务器实现,几行代码就能让浏览器和服务器实现实时双向通信。本教程带你 10 分钟内从零跑通一个 PHP WebSocket 服务器,包含完整的聊天示例与推送机制,新手也能快速上手。
为什么选择 bloatless/php-websocket?
传统的 PHP 是"请求-响应"模式,服务器无法主动推送消息。而 WebSocket 协议让服务器可以随时向客户端发送数据,这是实现聊天室、实时通知、在线状态等功能的基石。
这款 PHP WebSocket 库的核心卖点:
- ⚡极致精简:无多余依赖,核心代码易读,是学习 WebSocket 协议的绝佳材料
- 📦零配置运行:
php server.php一行命令即可启动 - 🧩插件化应用:通过 Application 机制挂载多个独立业务(聊天、状态监控等)
- ⏱️内置定时器:无需额外进程即可实现周期性任务
- 📡IPC 推送客户端:其他 PHP 进程可通过 Unix Socket 向服务器推送消息
环境要求:3个必备条件
在开始前,确认你的环境满足以下要求:
| 依赖 | 说明 |
|---|---|
| PHP >= 7.4 | 支持 PHP 7.4 与 8.x |
| ext-json | JSON 扩展 |
| ext-sockets | Sockets 扩展(多数 Linux 发行版需安装) |
依赖信息详见 composer.json。
一键安装步骤
在项目目录中执行 Composer 命令,10 秒完成安装:
composer require bloatless/php-websocket如果想先体验完整示例,也可以克隆仓库:
git clone https://gitcode.com/gh_mirrors/ph/php-websocket cd php-websocket composer install快速启动:10行代码的PHP WebSocket服务器
仓库已内置一个可直接运行的示例,位于 examples/server.php。核心逻辑如下:
<?php require __DIR__ . '/../vendor/autoload.php'; // 创建服务器:监听 127.0.0.1:8000 $server = new \Bloatless\WebSocket\Server('127.0.0.1', 8000, '/tmp/phpwss.sock'); // 注册两个应用:状态监控 与 聊天室 $server->registerApplication('status', \Bloatless\WebSocket\Application\StatusApplication::getInstance()); $server->registerApplication('chat', \Bloatless\WebSocketExamples\Application\Chat::getInstance()); // 启动! $server->run();在终端执行:
php examples/server.php看到监听提示后,你的 PHP WebSocket 服务器就已运行在ws://127.0.0.1:8000上。
浏览器连接:体验实时聊天
项目自带一个开箱即用的聊天演示页面 examples/public/chat.html,前端 JS 通过原生WebSocketAPI 连接到ws://127.0.0.1:8000/chat:
let socket = new WebSocket('ws://127.0.0.1:8000/chat'); socket.onmessage = (msg) => { let response = JSON.parse(msg.data); console.log(response.data); };打开浏览器访问该页面,输入消息按回车,所有连接的客户端都会实时收到广播。试试开两个浏览器窗口——这就是双向实时通信的魅力。前端逻辑可参考 examples/public/js/chat.js。
核心概念:Application应用机制
服务器本身只负责连接,业务逻辑由Application(应用)承载。每个应用实现一个接口,见 src/Application/ApplicationInterface.php:
onConnect:客户端连接时触发,可在此记录在线用户onDisconnect:客户端断开时触发onData:收到客户端消息时触发,核心业务都写在这里onIPCData:收到其他进程通过 IPC 推送的数据时触发
以聊天室为例,examples/Application/Chat.php 中onData收到echo指令后,会把消息广播给所有客户端——不足百行代码就实现了完整聊天室。
定时任务:用Timer周期执行
长驻进程常需要周期性任务。服务器内置定时器支持:
$server->addTimer(5000, function () use ($chat) { $chat->someMethod(); // 每 5 秒执行一次 });相关实现在 src/Timer.php 与 src/TimerCollection.php。
进阶玩法:PushClient跨进程推送
如何把"博客发布新文章"这样的外部事件推送到 WebSocket 服务器?PushClient通过 Unix Domain Socket 解决它:
$pushClient = new \Bloatless\WebSocket\PushClient('//tmp/phpwss.sock'); $pushClient->sendToApplication('chat', [ 'action' => 'echo', 'data' => '新文章已发布!', ]);任意 PHP 脚本(甚至定时任务)都能这样向运行中的服务器推送消息,完整示例见 examples/push.php。⚠️ 注意:推送消息不能超过 64KB。
适用场景与限制说明
坦诚地说,这个 PHP WebSocket 服务器定位是教育与内部工具,官方文档明确提示未在生产环境测试。使用它前请了解以下限制:
- ❌ 不支持 SSL/WSS(可通过 nginx 反向代理解决)
- ❌ 不支持二进制消息
- ❌ 不适合海量高并发连接
它最适合的场景:学习 WebSocket 原理、内部小工具、教学演示、中小规模实时通知。若需生产级方案,可在掌握原理后迁移到更成熟的 PHP WebSocket 框架。
总结
现在你已经掌握了:
- ✅ Composer 一键安装 PHP WebSocket 库
- ✅ 启动内置示例服务器并验证连接
- ✅ 用浏览器实时通信
- ✅ Application 机制编写自定义业务
- ✅ Timer 定时任务与 PushClient 跨进程推送
代码足够简单,你可以从 src/Server.php 开始逐行阅读,彻底理解一个 PHP WebSocket 服务器是如何实现的。动手试试吧——10 分钟后,你就能拥有自己的实时通信服务!
【免费下载链接】php-websocketSimple WebSocket server implemented in PHP.项目地址: https://gitcode.com/gh_mirrors/ph/php-websocket
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考