大家好,又见面了,我是全栈君。
TCP长连接的应用场景
比如聊天室,游戏等应用,就会使用到长链接
服务端应用程序
代码语言:javascript复制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();
客户端应用程序
代码语言:javascript复制客户端启动发送数据: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();
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111885.html原文链接:https://javaforall.cn