入门指引 Server Client Process AsyncIO Memory HttpServer WebSocket 高级 其他

发布于 2015-08-09 09:45:53 | 215 次阅读 | 评论: 0 | 来源: 网络整理

注册异步事件回调函数,调用on方法会使当前的socket变成非阻塞的。

int swoole_client::on(string $event, mixed $callback);

参数1为事件类型,支持connect/error/receive/close 4种。
参数2为回调函数,可以是函数名字符串、匿名函数、类静态方法、对象方法。

调用swoole_client->close()时会自动退出事件循环
on方法也可以用在UDP协议上,需要v1.6.3以上版本,UDP协议的connect事件在执行完connect方法后立即被回调 udp没有close事件

v1.6.10

从1.6.10开始,onReceive不再需要调用一次$client->recv()来接收数据,onReceive回调函数的第二个参数就是 收到的数据了。
另外onClose事件,也无需调用$client->close(),swoole内核会自动执行close。

示例:

$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); //异步非阻塞

$client->on("connect", function($cli) {
    $cli->send("hello worldn");
});

$client->on("receive", function($cli, $data = ""){
    $data = $cli->recv(); //1.6.10+ 不需要
    if(empty($data)){
        $cli->close();
        echo "closedn";
    } else {
        echo "received: $datan";
        sleep(1);
        $cli->send("hellon");
    }
});

$client->on("close", function($cli){
    $cli->close(); // 1.6.10+ 不需要
    echo "closen";
});

$client->on("error", function($cli){
    exit("errorn");
});

$client->connect('127.0.0.1', 9501, 0.5);
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务