news 2026/8/28 10:44:01

10分钟搭建你的第一个PHP WebSocket服务器:bloatless/php-websocket快速入门教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10分钟搭建你的第一个PHP WebSocket服务器:bloatless/php-websocket快速入门教程

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-jsonJSON 扩展
ext-socketsSockets 扩展(多数 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 框架。

总结

现在你已经掌握了:

  1. ✅ Composer 一键安装 PHP WebSocket 库
  2. ✅ 启动内置示例服务器并验证连接
  3. ✅ 用浏览器实时通信
  4. ✅ Application 机制编写自定义业务
  5. ✅ 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 10:42:28

MCP 评估怎么做:10 道测试题快速验收你的 AI 技能

MCP 评估怎么做&#xff1a;10 道测试题快速验收你的 AI 技能 【免费下载链接】skills Public repository for Agent Skills 项目地址: https://gitcode.com/GitHub_Trending/skills3/skills 你花了一周写 MCP 服务器&#xff0c;十几个工具打磨得漂漂亮亮&#xff0c;却…

作者头像 李华
网站建设 2026/8/28 10:38:06

AI智能体实验室压力测试:真实物理世界的工程挑战

如果你关注 AI 圈&#xff0c;最近会有一个很强烈的体感&#xff1a;大模型不再只停留在聊天框里&#xff0c;而是开始主动规划任务、调用工具、修改代码、完成多步操作。但问题也随之而来——当 AI 从数字世界走进物理世界&#xff0c;它还能不能像处理文本那样稳定可靠&#…

作者头像 李华
网站建设 2026/8/28 10:37:39

JMeter自定义函数开发指南:从原理到实战,打造专属性能测试工具

1. 从“拿来主义”到“自给自足”&#xff1a;为什么我们需要自定义JMeter函数 在性能测试领域&#xff0c;JMeter几乎是绕不开的工具。无论是测试工程师、开发人员还是运维&#xff0c;都或多或少用它来模拟用户请求&#xff0c;给系统“施压”。用久了&#xff0c;你会发现JM…

作者头像 李华
网站建设 2026/8/28 10:32:40

人形机器人产业链:核心零部件比整机厂更赚钱的底层逻辑

人形机器人整机最近热度很高&#xff0c;但一条更反直觉的产业链逻辑正在浮出水面&#xff1a;真正赚钱的&#xff0c;可能不是做整机的&#xff0c;而是给整机供核心零部件的厂商。拿灵巧手来说&#xff0c;产业里讨论的“单手几十万”并不是噱头&#xff0c;在早期小批量交付…

作者头像 李华
网站建设 2026/8/28 10:31:41

BP神经网络原理与实现:从数学建模到代码实战

1. 从“抱佛脚”到“懂原理”&#xff1a;为什么BP神经网络是数学建模的“万金油”“数学建模前抱一下腿”——这个标题太真实了&#xff0c;几乎是每个参加过建模竞赛的同学都曾有过的内心写照。面对一个全新的、数据驱动的赛题&#xff0c;时间紧迫&#xff0c;从头推导算法不…

作者头像 李华
网站建设 2026/8/28 10:31:28

航拍图像实例分割实战:从数据处理到YOLOv8模型训练与部署

简介&#xff1a;实例分割是计算机视觉中的一项核心技术&#xff0c;它要求模型不仅能识别图像中的物体&#xff0c;还要精确分割出每个独立实例的像素级轮廓。其原理通常基于深度学习框架&#xff0c;通过编码器-解码器结构或类似Mask R-CNN的架构&#xff0c;在目标检测的基础…

作者头像 李华