zoukankan      html  css  js  c++  java
  • Swoole从入门到入土(10)——HTTP服务器[初步接触]

    讨论完了TCP服务器,接下来的话题就是HTTP服务器。HTTP这个协议“一般”是搭载在TCP协议上实现的。

    注意,这里用“一般”是以前多数是这样做的,在“HTTP协议白皮书”中没有规定HTTP协议底层要搭载在哪种协议上,而且在HTTP3(由谷歌QUIC进化而成)所在的传输层就是搭载在UDP协议上。所以千成别认为HTTP协议底层是TCP!

    讨论Swoole中的Http服务器的过程中,我们只需要把握以下三点:

    -SwooleHttpServer 继承自 SwooleServer,所以TCP服务器所有的配置项、函数、事件在Http服务器中都可以使用,进程模型也是一致的。

    -SwooleHttpServer对 HTTP 协议的支持并不完整,一定要作为应用服务器处理动态请求。并且在前端增加 Nginx 作为代理。

    -HTTP 服务器只需要关注请求响应即可,所以只需要监听一个 onRequest 事件。当有新的 HTTP 请求进入就会触发此事件,事件回调函数有 2 个参数,一个是 $request 对象,包含了请求的相关信息,如 GET/POST 请求的数据。。

    有了以上三点,我们对一Http服务器的学习难度就大大降低了。

    示例:

    $http = new SwooleHttpServer('0.0.0.0', 9501);
    
    $http->on('request', function ($request, $response) {
        var_dump($request->server);
        $response->header("Content-Type", "text/html; charset=utf-8");
        $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
    });
    
    $http->start();

    效果图:

    是不是很简单?所有的工作都在onRequest事件中展开,实现应答式的短连接交互。

    HTTP初步实验到这里结束,大家下一篇再见:)

    ---------------------------  我是可爱的分割线  ----------------------------

    最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。

  • 相关阅读:
    python 面向对象编程
    用python写个快排
    函数(参数,作用域,返回函数,匿名函数,偏函数)
    SpringBoot学习4:springboot整合listener
    SpringBoot学习1:创建第一个SpringBoot项目
    SpringBoot学习2:springboot整合servlet
    SpringBoot学习3:springboot整合filter
    使用FreeMarker导出word文档(支持导出图片)
    MySQL中实现递归查询
    MySQL中find_in_set()函数的使用
  • 原文地址:https://www.cnblogs.com/ddcoder/p/13776845.html
Copyright © 2011-2022 走看看