ThinkPHP 中搭建 WebSocket
通过以上步骤,你就可以在 ThinkPHP 中成功搭建 WebSocket 服务。你可以使用浏览器的开发者工具或第三方 WebSocket 客户端工具(如。)来测试 WebSocket 服务。连接成功后,你可以发送消息并查看服务端的响应。,并重启 Web 服务器。
·
在 ThinkPHP 中搭建 WebSocket 服务,可按以下步骤进行:
1. 环境准备
确保你的服务器环境满足以下要求:
- PHP 版本 >= 7.1
- 安装
swoole扩展,因为 ThinkPHP 借助 Swoole 来实现 WebSocket 服务。你可以通过以下命令安装 Swoole 扩展:
收起
bash
pecl install swoole
安装完成后,在 php.ini 中添加 extension=swoole.so,并重启 Web 服务器。
2. 创建 ThinkPHP 项目
如果你还没有 ThinkPHP 项目,可以使用 Composer 来创建一个新的项目:
收起
bash
composer create-project topthink/think tp-websocket
cd tp-websocket
3. 安装 ThinkPHP Swoole 扩展
使用 Composer 安装 ThinkPHP Swoole 扩展,该扩展为 ThinkPHP 提供了 Swoole 的支持:
收起
bash
composer require topthink/think-swoole
4. 配置 WebSocket 服务
4.1 配置文件
在 config/swoole.php 中进行 WebSocket 服务的配置,示例配置如下:
收起
php
return [
'enable' => true,
'server' => [
'host' => '0.0.0.0',
'port' => 9501,
'type' => 'websocket',
'sock_type' => SWOOLE_SOCK_TCP,
'callbacks' => [
\Swoole\Server::ON_OPEN => 'app\http\controller\WebSocket@onOpen',
\Swoole\Server::ON_MESSAGE => 'app\http\controller\WebSocket@onMessage',
\Swoole\Server::ON_CLOSE => 'app\http\controller\WebSocket@onClose',
],
],
];
上述配置中:
host和port分别指定了 WebSocket 服务监听的地址和端口。type设置为websocket表示启用 WebSocket 服务。callbacks定义了 Swoole 服务器的回调函数,分别对应连接打开、消息接收和连接关闭事件。
4.2 创建控制器
在 app/http/controller 目录下创建 WebSocket.php 文件,实现回调函数:
收起
php
<?php
namespace app\http\controller;
use think\swoole\Websocket;
class WebSocket
{
/**
* 当有新的客户端连接时触发
* @param Websocket $ws
* @param \Swoole\Http\Request $request
*/
public function onOpen(Websocket $ws, $request)
{
$ws->push($request->fd, "Hello, welcome!");
}
/**
* 当接收到客户端消息时触发
* @param Websocket $ws
* @param string $data
*/
public function onMessage(Websocket $ws, $data)
{
// 向客户端发送接收到的消息
$ws->push($ws->getSender(), "You sent: ". $data);
}
/**
* 当客户端连接关闭时触发
* @param Websocket $ws
* @param int $fd
*/
public function onClose(Websocket $ws, $fd)
{
echo "Client {$fd} closed\n";
}
}
5. 启动 WebSocket 服务
在项目根目录下,使用以下命令启动 WebSocket 服务:
收起
bash
php think swoole:server start
若要停止服务,可使用:
收起
bash
php think swoole:server stop
若要重启服务,可使用:
收起
bash
php think swoole:server restart
6. 测试 WebSocket 服务
你可以使用浏览器的开发者工具或第三方 WebSocket 客户端工具(如 wscat)来测试 WebSocket 服务。以下是使用 wscat 的示例:
收起
bash
wscat -c ws://localhost:9501
连接成功后,你可以发送消息并查看服务端的响应。
通过以上步骤,你就可以在 ThinkPHP 中成功搭建 WebSocket 服务。
更多推荐
所有评论(0)