Hprose\Swoole\WebSocket\Service::wsHandle PHP Method

wsHandle() public method

public wsHandle ( $server )
    public function wsHandle($server)
    {
        $self = $this;
        $buffers = array();
        $server->on('open', function ($server, $request) use($self, &$buffers) {
            $fd = $request->fd;
            if (isset($buffers[$fd])) {
                unset($buffers[$fd]);
            }
            $context = new stdClass();
            $context->server = $server;
            $context->fd = $fd;
            $context->userdata = new stdClass();
            try {
                $onAccept = $self->onAccept;
                if (is_callable($onAccept)) {
                    call_user_func($onAccept, $context);
                }
            } catch (Exception $e) {
                $server->close($fd);
            } catch (Throwable $e) {
                $server->close($fd);
            }
        });
        $server->on('close', function ($server, $fd) use($self, &$buffers) {
            if (isset($buffers[$fd])) {
                unset($buffers[$fd]);
            }
            $context = new stdClass();
            $context->server = $server;
            $context->fd = $fd;
            $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('message', function ($server, $frame) use($self, &$buffers) {
            if (isset($buffers[$frame->fd])) {
                if ($frame->finish) {
                    $data = $buffers[$frame->fd] . $frame->data;
                    unset($buffers[$frame->fd]);
                    $self->onMessage($server, $frame->fd, $data);
                } else {
                    $buffers[$frame->fd] .= $frame->data;
                }
            } else {
                if ($frame->finish) {
                    $self->onMessage($server, $frame->fd, $frame->data);
                } else {
                    $buffers[$frame->fd] = $frame->data;
                }
            }
        });
    }