http央求数据选拔

swoole的商酌深入分析是在reactor线程中管理的,在reactor
swReactorThread_loop(卡塔尔(قطر‎ 事件循环中经过 swPort_set_protocol(卡塔尔注册了商业事务深入分析管理函数, 此中http的议和解析函数是 swPort_onRead_http()

  在用swoole增加写在线闲谈例子的时候境遇一个标题,查了众多素材,今后记录于此。

reactor线程运行文件: src/network/ReactorThread.c
swReactorThread_start()

美高梅娱乐场官网,  通过看swoole_server的接口文书档案,回调注册接口on中倒是有一言以蔽之的讲解:

万风华正茂对reactor事件管理流程不驾驭能够参见那篇文章swoole-主线程和reactor线程交互作用流程

* swoole_server->on & swoole_http_server->on are the same except swoole_http_server :
     * - not accepting onConnect/onReceive callback accept events onRequest

上边首要来看 swPort_onRead_http, 对http公约的分析 。
这里表达下,有了这么些左券深入分析后,如若你运行的是http
server可能,运行是计划了 open_http_protocol 选项,
都会实践swPort_onRead_http对数据开展http合同深入分析, 这样在 onReceive(卡塔尔(قطر‎中选用到的正是整整http乞请的多寡

 

swPort_onRead_http(卡塔尔(قطر‎ 函数在 src/network/Port.c 文书中, 源码就不帖了,
说下那些函数的首要职能

swoole_http_server和swoole_server大假设雷同的,不过swoole_http_server中是不调用connect和receive接口的,相呼应调用request接口。

  1. 通过 swConnection_recv(卡塔尔国 恐怕数10次拿走,
    有限支撑最后得到几个整机的http包, 假若大文件这种会收取叁个一个http
    chunk包, chunk的拍卖不在此,而是在切实的worker中
  2. 设若http method是 100-continue, 则直接处理
  3. 借使诉求的是静态文件,则经过 swPort_http_static_handler(卡塔尔国直接重回静态文件内容, 静态文件管理表明
  4. 其余情状都经过 swReactorThread_dispatch(conn, buffer->str,
    buffer->length); 发送给worker去处理

  在闲聊的小例子中用的是swoole_websocket_server,通过测验在swoole_websocket_server中receive接口也是未有被调用的,不过作为长连接服务,worker中

发表评论

电子邮件地址不会被公开。 必填项已用*标注