swoole 面向过程改为面向对象写法例子

面向过程:

$server = new SwooleWebSocketServer("0.0.0.0", 8812);

$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "server: handshake success with fd{$request->fd}
";
});

$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}
";
    $server->push($frame->fd, "this is server");
});

$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed
";
});

$server->start();

写法可更改为如下

面向对象:

class WS {
    public $server;
    public function __construct() {
        $this->server = new SwooleWebSocketServer("0.0.0.0", 8812);
        $this->server->on('open', [$this, 'onOpen']);
        $this->server->on('message', [$this, 'onMessage']);
        $this->server->on('close', [$this, 'onClose']);

        $this->server->start();
    }

    /**
     * 监听websocket的打开连接事件
     * @param $server
     * @param $request
     */
    public function onOpen($server,$request)
    {
        echo "server: handshake success with fd{$request->fd}
";
    }

    /**
     * 监听websocket的消息事件
     * @param $server
     * @param $frame
     */
    public function onMessage($server,$frame)
    {
        echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}
";
        $server->push($frame->fd, "this is server");
    }

    /**
     * 监听websocket的关闭连接事件
     * @param $server
     * @param $fd
     */
    public function onClose($server,$fd)
    {
        echo "client {$fd} closed
";
    }
}
$obj = new WS();
new WebsocketTest();
原文地址:https://www.cnblogs.com/-mrl/p/13208153.html