TCP长连接的应用场景比如聊天室,游戏等应用,就会使用到长链接
服务端应用程序CLI 挂载启动服务端程序:php server.php
swoole的运行模式,默认是多进程模式,worker进程数量官方建议设置为CPU核数的1-4倍
$serv = new swoole_server('127.0.0.1', 9501);// 工作进程数量. 设置为CPU的1-4倍最合理
$serv->set(['worker_num' => 2,
]);$serv->on('Connect', function ($serv, $fd) {echo "new client connected." . PHP_EOL;
});$serv->on('Receive', function ($serv, $fd, $fromId, $data) {// 收到数据后发送给客户端$serv->send($fd, 'Server '. $data);
});$serv->on('Close', function ($serv, $fd) {echo "Client close." . PHP_EOL;
});
$serv->start();
客户端应用程序
客户端启动发送数据:php client.php
new swoole_client(socket_type, sync_or_async) 有两个参数
第1参数:socket类型
SWOOLE_SOCK_TCP :创建tcp socket
SWOOLE_SOCK_TCP6:创建tcp ipv6 socket
SWOOLE_SOCK_UDP:创建udp socket
SWOOLE_SOCK_UDP6:创建udp ipv6 socket
第2参数:同步还是异步
SWOOLE_SOCK_SYNC :同步客户端
SWOOLE_SOCK_ASYNC :异步客户端
// 创建一个同步阻塞的tcp socket
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);// 随后建立连接,连接失败直接退出并打印错误码
$client->connect('127.0.0.1', 9501) || exit("connect failed. Error: {$client->errCode}\n");
// 向服务端发送数据
$client->send("hello server.");
// 从服务端接收数据
$response = $client->recv();
// 输出接受到的数据
echo $response . PHP_EOL;// 关闭连接
$client->close();