Swoole入门 - WebSocket 服务[面向对象]

我们之前的server都是面向过程的,本篇示例用面向对象的思想去重构WebSocketServer。

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();

再去使用上篇的方法测试,依然有效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容