Swoole Client

注意

异步客户端只能用于cli环境

Client代码(会不断完善补充)

同步client

/**
 * connect/send/recv 这些方法会等待IO完成后再返回
 * 所以只要你用了就是同步客户端,服务端返回了才会往下执行
 * 同步阻塞操作并不消耗CPU资源,IO操作未完成当前进程会自动转入sleep模式,
 * 当IO完成后操作系统会唤醒当前进程,继续向下执行代码。
 *   */
$client = new swoole_client(SWOOLE_SOCK_TCP);

//connect的1代表的是整个与服务端交互的超时时间,超过这个时间会自动断开
if (!$client->connect('127.0.0.1',9999, 1)){
    die("connect failed.");
}
if (!$client->send('hello world')){
    die("send failed.");
}

//从服务器接收数据,如果是超时的错误,这种方式捕获不了,会报PHP Warning
if (!$data = $client->recv()){
    die("recv failed.");
}
echo $data;
//关闭连接
$client->close();

异步Client

/**
 * **异步客户端必须设置onConnect、onError、onReceive、onClose
 *   */
$client = new swoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_ASYNC);

//连接成功回调
$client->on('connect', function ($cli){
    //向服务端发送信息
    $cli->send("hello world\n");
});

//数据接收回调
$client->on('receive', function ($cli,$data){
    echo "Received: ".$data."\n";
});

//连接失败回调
$client->on('error',function($cli){
    echo "Connect failed\n";
});

//注册连接关闭回调
$client->on("close", function($cli){
    echo "Connection close\n";
});

//发起连接的操作会立即返回,继续执行下面的代码
$client->connect('127.0.0.1', 9999,0.5);

echo '已经完成异步发送'.PHP_EOL;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值