<?php
class Tcp{
const HOST = '127.0.0.1';
const PROT = '9501';
public $tcpServer = null; // 存放tcp连接信息
public $config = [
'worker_num' => 8, // 开启进程数
'max_request' => 10000 // 当前worker进程 允许收到的最大请求次数
];
public function __construct()
{
// 创建server对象 监听127.0.0.1:9501端口
$this->tcpServer = new Swoole\Server(self::HOST, self::PROT);
// 设置参数
$this->tcpServer->set($this->config);
// 监听新连接进入事件
$this->tcpServer->on('connect', [$this, 'onConnect']);
// 监听接收数据事件
$this->tcpServer->on('receive', [$this, 'onReceive']);
// 监听连接关闭事件
$this->tcpServer->on('close', [$this, 'onClose']);
// 启动服务
$this->tcpServer->start();
}
/**
* 新的连接进入事件
* @param $server Swoole\Server 对象
* @param $fd 连接的文件描述符
* @param $reactorId 连接所在的 Reactor 线程 ID
*/
public function onConnect($server, $fd, $reactorId)
{
echo '这是新连接哦 - fd:'. $fd;
}
/**
* 接收到数据时的回调事件
* @param $server Swoole\Server 对象
* @param $fd 连接的文件描述符
* @param $reactorId 连接所在的 Reactor 线程 ID
* @param $data 收到的数据内容,可能是文本或者二进制内容
*/
public function onReceive($server, $fd, $reactorId, $data)
{
$message = '我收到你的消息了: - fd:'. $fd. ' - reactorId:'. $reactorId. ' - 消息内容:'. $data;
// 向客户端发送消息
$this->tcpServer->send($fd, $message);
}
/**
* 连接关闭事件
* @param $server Swoole\Server 对象
* @param $fd 连接的文件描述符
* @param $reactorId 来自哪个 reactor 线程,主动 close 关闭时为负数
*/
public function onClose($server, $fd, $reactorId)
{
echo '我断开连接了 - fd:'. $fd. '--- reactorId:'. $reactorId;
}
}
new Tcp();
swoole TCP服务器
最新推荐文章于 2022-07-21 15:15:25 发布