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

面向过程:

$server = new Swoole\WebSocket\Server("0.0.0.0", 8812);

$server->on('open', function (Swoole\WebSocket\Server $server, $request) {
    echo "server: handshake success with fd{$request->fd}\n";
});

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

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

$server->start();

写法可更改为如下

面向对象:

class WS {
    public $server;
    public function __construct() {
        $this->server = new Swoole\WebSocket\Server("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}\n";
    }

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

    /**
     * 监听websocket的关闭连接事件
     * @param $server
     * @param $fd
     */
    public function onClose($server,$fd)
    {
        echo "client {$fd} closed\n";
    }
}
$obj = new WS();
new WebsocketTest();

 

posted @ 2020-06-29 15:21  一个人的孤独自白  阅读(513)  评论(0编辑  收藏  举报