{"id":442,"title":"swoole\u4e4bwebsocket\u6709\u65f6\u5019\u8fde\u63a5\u4e0a\uff0c\u5237\u65b0\u4e00\u4e0b\u53c8\u8fde\u63a5\u4e0d\u4e0a","good":0,"bad":18,"hit":3902,"created_at":"2019-09-11 01:04:08","content":"

\u6700\u8fd1\u7528swoole\u505a\u4e2a\u5ba2\u670d\u7cfb\u7edf\uff0c\u9047\u5230\u4e00\u4e2a\u5947\u602a\u7684\u95ee\u9898\uff0c\u524d\u7aef\u7528websocket\u8fde\u63a5\u4e0a\uff0c\u5237\u65b0\u540e\u8fde\u4e0d\u4e0a\u4e86\uff0c\u518d\u5237\u65b0\u4e00\u4e0b\u53c8\u8fde\u63a5\u4e0a\u4e86\uff1b<\/p>

\u540e\u6765\u53d1\u73b0\u662f\u4e0b\u9762\u6709\u4e2a\u6b7b\u5faa\u73afwhile(true)\u90a3\u91cc\u963b\u585e\u4e86\uff1b\u662f\u56e0\u4e3a\u4e0a\u9762\u7684swoole tick\u6267\u884c\u4e86\u4e00\u6bb5\u65f6\u95f4\u540e\u5c31\u4e0d\u6267\u884c\u4e86\uff0c\u540e\u6765\u81ea\u505a\u806a\u660e\u7684\u7528\u4e86\u4e2awhile(true)\u4ee3\u66ff\uff0c\u6ca1\u60f3\u5230\u5f71\u54cd\u5230\u4e86\u540e\u9762\u7684onMessage\u4e8b\u4ef6\uff0c\u5bfc\u81f4\u524d\u7aef\u53d1\u9001\u8bf7\u6c42\u540e\uff0c\u540e\u7aef\u6709\u65f6\u5019\u6ca1\u6709\u54cd\u5e94\u5e76\u53d1\u9001\u6570\u636e\u7ed9\u524d\u7aef\uff1b <\/p>

while (true) {\u8fd9\u91cc\u7684\u95ee\u9898<\/pre>
        \/**\n         * \u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5efa\u7acb\u8fde\u63a5\u5e76\u5b8c\u6210\u63e1\u624b\n         * $request \u662f\u4e00\u4e2aHttp\u8bf7\u6c42\u5bf9\u8c61\uff0c\u5305\u542b\u4e86\u5ba2\u6237\u7aef\u53d1\u6765\u7684\u63e1\u624b\u8bf7\u6c42\u4fe1\u606f\n         * onOpen\u4e8b\u4ef6\u51fd\u6570\u4e2d\u53ef\u4ee5\u8c03\u7528push\u5411\u5ba2\u6237\u7aef\u53d1\u9001\u6570\u636e\u6216\u8005\u8c03\u7528close\u5173\u95ed\u8fde\u63a5\n         * onOpen\u4e8b\u4ef6\u56de\u8c03\u662f\u53ef\u9009\u7684\n         *\/\n        $this->server->on('open', function ($ser, $request) {\n            $fd = $request->fd;\n            $this->_sendConsole($fd,'\u8fde\u63a5\u6210\u529f,fd='.$fd);\n            if ($ser->worker_id == 0) {\n                $this->server->tick(1000, function () use ($ser) {\n                    echo 1;\n                    \/\/\u6e05\u9664\u4e0d\u5728\u7ebf\u7684\u8bbf\u5ba2\u53ca\u5ba2\u670d\n                    $this->_clearNotOnline();\n                    \/\/\u5df2\u8bfb\u4efb\u52a1\u5904\u7406\n                    $this->_sendHasRead();\n                    \/\/@todo \u5206\u914d\u804a\u5929\u7ed9\u5ba2\u670d\uff1a\u627e\u5230\u672a\u5206\u914d\u7684\u804a\u5929\uff0c\u6839\u636e\u5546\u5bb6id\u627e\u5230\u5546\u5bb6\u7684\u5ba2\u670d\u8fdb\u884c\u5206\u914d\n                    \/\/\u540e\u53f0\u624b\u52a8\u63a5\u5f85\u6d4b\u8bd5\u901a\u8fc7\u540e\u518d\u5728\u8fd9\u91cc\u5206\n                });\n\/\/                while (true) {\n\/\/                    \/\/echo 2;\n\/\/                    \/\/\u6e05\u9664\u4e0d\u5728\u7ebf\u7684\u8bbf\u5ba2\u53ca\u5ba2\u670d\n\/\/                    $this->_clearNotOnline();\n\/\/                    \/\/\u5df2\u8bfb\u4efb\u52a1\u5904\u7406\n\/\/                    $this->_sendHasRead();\n\/\/                    \/\/@todo \u5206\u914d\u804a\u5929\u7ed9\u5ba2\u670d\uff1a\u627e\u5230\u672a\u5206\u914d\u7684\u804a\u5929\uff0c\u6839\u636e\u5546\u5bb6id\u627e\u5230\u5546\u5bb6\u7684\u5ba2\u670d\u8fdb\u884c\u5206\u914d\n\/\/                    \/\/\u540e\u53f0\u624b\u52a8\u63a5\u5f85\u6d4b\u8bd5\u901a\u8fc7\u540e\u518d\u5728\u8fd9\u91cc\u5206\n\/\/                    sleep(1);\n\/\/                }\n            }\n        });<\/pre>

<\/p>"}