```
Ratchet 是一个用于构建 WebSocket 服务器的 PHP 库,能够让你轻松地创建实时应用。以下是一个简单的示例,展示如何使用 Ratchet 创建一个基本的 WebSocket 服务器。
安装 Ratchet
首先,你需要通过 Composer 安装 Ratchet。确保你已经安装了 Composer,然后在你的项目目录中运行以下命令:
bash
composer require cboden/ratchet
创建 WebSocket 服务器
接下来,创建一个 PHP 文件,例如 server.php,并添加以下代码:
php
clients = new \SplObjectStorage; // 存储所有连接的客户端
}
public function onOpen(ConnectionInterface $conn) {
// 新客户端连接
$this->clients->attach($conn);
echo "New connection: {$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 "Connection {$conn->resourceId} has disconnected\n";
}
public function onError(ConnectionInterface $conn, \Exception $e) {
echo "An error has occurred: {$e->getMessage()}\n";
$conn->close();
}
}
// 创建 WebSocket 服务器
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8080 // 监听的端口
);
// 启动服务器
$server->run();
启动服务器
在终端中运行以下命令以启动服务器:
bash
php server.php
使用 WebSocket 客户端
你可以使用之前提供的 HTML 示例页面,确保 WebSocket 服务器的地址与代码一致。确保页面中的 WebSocket URL 是 ws://localhost:8080/chat。
测试
打开多个浏览器窗口或标签,加载 HTML 页面。
在任何一个窗口中发送消息,所有连接的窗口都应该能收到该消息。
注意事项
确保你的 PHP 环境支持 WebSocket。你可能需要安装 bcmath 和 mbstring 扩展。
Ratchet 需要 PHP 7.1 或更高版本。
在生产环境中,你可能需要使用更复杂的配置和负载均衡器,以确保稳定性和安全性。
```
html页面
```
root@tr-desktop:/www/wwwroot/troa/webAPI/public/websocket# cat index.html
```