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初步实验到这里结束,大家下一篇再见:)

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

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

原文地址:https://www.cnblogs.com/ddcoder/p/13776845.html