Server->on

注册Server的事件回调函数。

bool Server->on(string $event, mixed $callback);
  • 第1个参数是回调的名称, 大小写不敏感,具体内容参考回调函数列表,事件名称字符串不要加on
  • 第2个函数是回调的PHP函数,可以是函数名的字符串,类静态方法,对象方法数组,匿名函数。

重复调用on方法时会覆盖上一次的设定

$serv = new Swoole\Server("127.0.0.1", 9501);
$serv->on('connect', function ($serv, $fd){
    echo "Client:Connect.\n";
});
$serv->on('receive', function ($serv, $fd, $reactor_id, $data) {
    $serv->send($fd, 'Swoole: '.$data);
    $serv->close($fd);
});
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.\n";
});
$serv->start();

  • 止水之约

    new 出来的swoole_server对象 和 回调函数中传入的 $serv 是否是同一个对象

  • Rango-韩天峰

    是同一个。

  • Su孤兒zzzzzzzJ

    我想请问一下,我在win下用cygwin 弄了一个swoole 的udp Server,在同局域网下的一个手机,用软件进行udp client 发送数据,服务器无法正常获取到IP地址,port端口和消息内容,所以想请教一下这是为什么的呢

  • 我爱吃荔枝

    on($event, $callback) 这里支持那些event?在哪里查询?每个$callback又是在哪里定义的?是下面那个时间回调列表中的函数么?

  • 我爱吃荔枝

    function onConnect(swoole_server $server, int $fd, int $from_id); function onReceive(swoole_server $server, int $fd, int $reactor_id, string $data); function onClose(swoole_server $server, int $fd, int $reactorId);

    可是看这里的回调函数定义和 $serv->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); 这里声明的参数个数又不一样。

  • 鲤鱼宝宝会吐泡泡

    想请问一下,这个$from_id是干嘛用的?

  • 游学者.天霸

    daemonize=1时(即开启守护进程的时候),call_user_func等一系列回调函数无法使用,求解释和解决办法

  • 蛟十五

    @鲤鱼宝宝会吐泡泡 是正在交互的客户端id吧

  • 慕容木木

    $form_id就是reactor id,就是线程的id

  • 新用户(手机注册)

    on('connect')中第三个参数回调的是线程的id,与on('receive')中第三个参数from_id 是否是同一个变量,可以讲解下该参数在那种模式下有效,为什么都是0,意义何在?

  • 新用户(手机注册)

    回调函数中传入的 $serv是否都可以用Swoole\Server修饰呢

  • 安静

    给对swoole感兴趣的朋友推荐一个swoole学习群:820469789,群里面每天会讲解swoole项目,还有大牛答疑解惑,学习与快乐同在。我们群是关于swoole学习的,希望大家多多交流。即使是小白也没有关系,只要加入QQ群,就可以获取一些免费的学习资料