討論完了TCP服務器,接下來的話題就是HTTP服務器。HTTP這個協議「通常」是搭載在TCP協議上實現的。php
注意,這裏用「通常」是之前多數是這樣作的,在「HTTP協議白皮書」中沒有規定HTTP協議底層要搭載在哪一種協議上,並且在HTTP3(由谷歌QUIC進化而成)所在的傳輸層就是搭載在UDP協議上。因此千成別認爲HTTP協議底層是TCP!html
討論Swoole中的Http服務器的過程當中,咱們只須要把握如下三點:前端
-Swoole\Http\Server 繼承自 Swoole\Server,因此TCP服務器全部的配置項、函數、事件在Http服務器中均可以使用,進程模型也是一致的。編程
-Swoole\Http\Server對 HTTP 協議的支持並不完整,必定要做爲應用服務器處理動態請求。而且在前端增長 Nginx 做爲代理。服務器
-HTTP 服務器只須要關注請求響應便可,因此只須要監聽一個 onRequest 事件。當有新的 HTTP 請求進入就會觸發此事件,事件回調函數有 2 個參數,一個是 $request 對象,包含了請求的相關信息,如 GET/POST 請求的數據。。函數
有了以上三點,咱們對一Http服務器的學習難度就大大下降了。學習
示例:spa
$http = new Swoole\Http\Server('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初步實驗到這裏結束,你們下一篇再見:)
--------------------------- 我是可愛的分割線 ----------------------------
最後博主借地宣傳一下,漳州編程小組招新了,這是一個面向漳州青少年信息學/軟件設計的學習小組,有意向的同窗點擊連接,聯繫我吧。