我们知道Swoole弥补了PHP没办法实现长连接的短板,在接下来的话题中,我们会从TCP服务器、HTTP服务器、WebSocket服务器、协程、管道、中间件等话题,一个个进行讨论。
1、开篇
我们以Swoole一个最简单的例子作为开篇:
//创建Server对象,监听 127.0.0.1:9501 端口
$server = new Swoole\Server('0.0.0.0', 9501);
//监听连接进入事件
$server->on('Connect', function ($server, $fd) {
echo "Client: Connect.\n";
});
//监听数据接收事件
$server->on('Receive', function ($server, $fd, $from_id, $data) {
$server->send($fd, "Server: " . $data);
});
//监听连接关闭事件
$server->on('Close', function ($server, $fd) {
echo "Client: Close.\n";
});
//启动服务器
$server->start();
把这段代码,保存为文件swoole.php,接着我们用php命令运行:php swoole.php。这时我们就可以看到一个简单的TCP服务器在侦听中。
代码的大致作用是:
1) 服务端发现客户端有连接的时候,就会输出文字“Client:Connect”
2) 一旦收到客户端的消息,就会向客户端发送“Server:消息原文”
3) 连接断开时,输出文字“Client:Close”
2、验证
现在为了让大家更直观的看到连接情况,我们用SockeTool工具进行实验:
1) php swoole.php启动服务端。
2) SocketTool创建TCP客户端,填入服务端对应的IP和端口:

本文介绍了如何使用Swoole在PHP中建立一个简单的TCP服务器,包括监听连接、接收和发送数据的事件处理。同时,详细解析了SwooleServer的相关函数,如构造函数、on、start、send和getClientInfo。此外,还探讨了Master、Reactor线程、Worker进程等概念,以及onConnect、onReceive和onClose事件的回调机制。
最低0.47元/天 解锁文章
456

被折叠的 条评论
为什么被折叠?



