Swoole從入門到入土(10)——HTTP伺服器[初步接觸]
阿新 • • 發佈:2020-10-10
討論完了TCP伺服器,接下來的話題就是HTTP伺服器。HTTP這個協議“一般”是搭載在TCP協議上實現的。
注意,這裡用“一般”是以前多數是這樣做的,在“HTTP協議白皮書”中沒有規定HTTP協議底層要搭載在哪種協議上,而且在HTTP3(由谷歌QUIC進化而成)所在的傳輸層就是搭載在UDP協議上。所以千成別認為HTTP協議底層是TCP!
討論Swoole中的Http伺服器的過程中,我們只需要把握以下三點:
-Swoole\Http\Server 繼承自 Swoole\Server,所以TCP伺服器所有的配置項、函式、事件在Http伺服器中都可以使用,程序模型也是一致的。
-Swoole\Http\Server對 HTTP 協議的支援並不完整,一定要作為應用伺服器處理動態請求。並且在前端增加 Nginx 作為代理。
-HTTP 伺服器只需要關注請求響應即可,所以只需要監聽一個 onRequest 事件。當有新的 HTTP 請求進入就會觸發此事件,事件回撥函式有 2 個引數,一個是 $request 物件,包含了請求的相關資訊,如 GET/POST 請求的資料。。
有了以上三點,我們對一Http伺服器的學習難度就大大降低了。
示例:
$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初步實驗到這裡結束,大家下一篇再見:)
--------------------------- 我是可愛的分割線 ----------------------------
最後博主借地宣傳一下,漳州程式設計小組招新了,這是一個面向漳州青少年資訊學/軟體設計的學習小組,有意向的同學點選連結,聯絡我吧。