ethancao / websocket
A simple PHP WebSocket library.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/ethancao/websocket
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2025-10-21 01:49:03 UTC
README
一个轻量级、简单易用的PHP WebSocket服务器库,支持基本的WebSocket通信功能。
功能特性
- 支持标准WebSocket协议
- 事件驱动架构(onOpen、onMessage、onClose事件)
- 支持单发消息和广播消息
- 自动心跳检测(ping/pong)
- 简单易用的API接口
系统要求
- PHP 7.4 或更高版本
- 需要启用PHP的stream_socket扩展(通常默认启用)
安装
使用Composer安装:
composer require ethancao/websocket
基本使用
以下是一个简单的WebSocket服务器示例:
<?php require 'vendor/autoload.php'; use Ethancao\WebSocket\WebSocketServer; // 创建WebSocket服务器实例,监听所有IP的8080端口 $server = new WebSocketServer('0.0.0.0', 8080); // 注册连接建立事件回调 $server->on('open', function($conn) { echo "新连接已建立\n"; // 可以在这里向新连接发送欢迎消息 }); // 注册消息接收事件回调 $server->on('message', function($conn, $msg) use ($server) { echo "收到消息: $msg\n"; // 向发送者回复消息 $server->send($conn, "你发送了: $msg"); // 广播消息给所有连接的客户端 $server->send(null, "广播: $msg"); }); // 注册连接关闭事件回调 $server->on('close', function($conn) { echo "连接已关闭\n"; }); // 启动服务器 $server->start();
将上面的代码保存为server.php
,然后运行:
php server.php
服务器将开始监听WebSocket连接。
API 文档
WebSocketServer 类
构造函数
public function __construct(string $host = '0.0.0.0', int $port = 8080)
$host
: 服务器绑定的主机地址,默认为'0.0.0.0'(所有网络接口)$port
: 服务器监听的端口,默认为8080
on 方法
public function on(string $event, callable $callback): void
$event
: 事件名称,可以是 'open', 'message', 'close'$callback
: 事件处理函数
send 方法
public function send($conn = null, string $payload = '', int $opcode = 0x1): void
$conn
: 连接资源(发送给特定客户端)或null(广播给所有客户端)$payload
: 要发送的消息内容$opcode
: WebSocket操作码,默认为0x1(文本帧)
start 方法
public function start(): void
启动WebSocket服务器,开始接受连接和处理消息。
客户端连接示例
使用JavaScript连接到WebSocket服务器:
const socket = new WebSocket('ws://localhost:8080'); socket.addEventListener('open', function (event) { console.log('已连接到服务器'); socket.send('Hello Server!'); }); socket.addEventListener('message', function (event) { console.log('收到服务器消息:', event.data); }); socket.addEventListener('close', function (event) { console.log('与服务器的连接已关闭'); }); socket.addEventListener('error', function (event) { console.error('连接错误:', event); });
高级用法
实现聊天服务器
可以基于此库实现一个简单的聊天服务器,允许多个客户端之间互相通信。
集成到现有项目
可以将此WebSocket服务器与现有的PHP应用程序集成,实现实时通信功能。
注意事项
- 此库是为学习和简单应用场景设计的,对于生产环境的高并发应用,建议使用Swoole、Workerman等更强大的异步框架
- 服务器在
start()
方法中启动一个无限循环,会阻塞当前进程 - 如果需要在Web服务器环境中使用,请考虑使用PHP的cli模式运行
许可证
本项目采用MIT许可证 - 详情请查看 LICENSE 文件
贡献
欢迎提交Issue和Pull Request!