Hprose\Swoole\Socket\Service::socketHandle PHP Метод

socketHandle() публичный Метод

public socketHandle ( $server )
    public function socketHandle($server)
    {
        $self = $this;
        $onReceives = array();
        $server->on('connect', function ($server, $socket, $fromid) use($self, &$onReceives) {
            $onReceives[$socket] = $self->getOnReceive();
            $context = new stdClass();
            $context->server = $server;
            $context->socket = $socket;
            $context->fd = $socket;
            $context->fromid = $fromid;
            $context->userdata = new stdClass();
            try {
                $onAccept = $self->onAccept;
                if (is_callable($onAccept)) {
                    call_user_func($onAccept, $context);
                }
            } catch (Exception $e) {
                $server->close($socket);
            } catch (Throwable $e) {
                $server->close($socket);
            }
        });
        $server->on('close', function ($server, $socket, $fromid) use($self, &$onReceives) {
            unset($onReceives[$socket]);
            $context = new stdClass();
            $context->server = $server;
            $context->socket = $socket;
            $context->fd = $socket;
            $context->fromid = $fromid;
            $context->userdata = new stdClass();
            try {
                $onClose = $self->onClose;
                if (is_callable($onClose)) {
                    call_user_func($onClose, $context);
                }
            } catch (Exception $e) {
            } catch (Throwable $e) {
            }
        });
        $server->on("receive", function ($server, $socket, $fromid, $data) use(&$onReceives) {
            $onReceive = $onReceives[$socket];
            $onReceive($server, $socket, $fromid, $data);
        });
    }

Usage Example

Пример #1
0
 public function __construct()
 {
     $this->serv = new swoole_http_server("0.0.0.0", 9501);
     $this->serv->set(array('worker_num' => 1, 'daemonize' => false, 'max_request' => 10000, 'dispatch_mode' => 2));
     $this->serv->on('Start', array($this, 'onStart'));
     $this->serv->on('Connect', array($this, 'onConnect'));
     $this->serv->on('Request', array($this, 'onRequest'));
     $this->serv->on('Close', array($this, 'onClose'));
     // add rpc port
     $port = $this->serv->listen("0.0.0.0", 9502, SWOOLE_SOCK_TCP);
     $port->set(['open_eof_split' => false]);
     $rpc_service = new Service();
     $rpc_service->socketHandle($port);
     $rpc_service->addFunction(array($this, 'upload'));
     // add udp port
     $udp_port = $this->serv->listen("0.0.0.0", 9503, SWOOLE_SOCK_UDP);
     $udp_port->on('packet', function ($serv, $data, $addr) {
         var_dump($data, $addr);
     });
     $this->serv->start();
 }
All Usage Examples Of Hprose\Swoole\Socket\Service::socketHandle