Swoole TCP服务器面向对象写法

Swoole TCP服务器面向对象写法

<?php

Class server
{
    public $server;

	/**
	 * @param string $host 监听地址
	 * @param int $port 监听端口
	 * @param array $set tcp服务器参数
	 */
    public function __construct($host = '127.0.0.1', $port = 9501 , $set = []){
        $this->server = new Swoole\Server($host,$port);
        if(!empty($set)){
            $this->server->set($set);
        }
        //监听连接进入事件
        /*server->on 注册Server的事件回调函数。bool Server->on(string $event, mixed $callback);
        *  第1个参数是回调的名称, 大小写不敏感
        *  第2个函数是回调的PHP函数
        *
        * $fd 客户端连接的唯一标识
        * $reactor_id 线程id
        */
        $this->server->on('Connect',[$this,'onConnect']);
		//接受时间回调监听
        $this->server->on('Receive',[$this,'onReceive']);
        //关闭
        $this->server->on('Close',[$this,'onClose']);
        //启动服务器
        /*
        * Server->start 启动服务器,监听所有TCP/UDP端口,函数原型:bool Server->start()
        */
        $this->server->start();
    }

    static function onConnect($serv, $fd,$reactor_id){
        echo "Client:{$reactor_id}-{$fd}-Connect.\n";
    }

    static function onReceive($serv, $fd, $from_id, $data){
         /*向客户端发送数据,函数原型:bool Server->send(mixed $fd, string $data, int $serverSocket = -1);
        *   (1)$fd,客户端的文件描述符
        *   (2)$data,发送的数据,TCP协议最大不得超过2M,可修改 buffer_output_size 改变允许发送的最大包长度
        *   (3)$serverSocket,向Unix Socket DGRAM对端发送数据时需要此项参数,TCP客户端不需要填写
        */
        $serv->send($fd, "接受数据Server: {$from_id}-{$fd}:".$data);
    }

    static function onClose($serv, $fd){
        #逻辑
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值