1. 程式人生 > 實用技巧 >Swoole從入門到入土(10)——HTTP伺服器[初步接觸]

Swoole從入門到入土(10)——HTTP伺服器[初步接觸]

討論完了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初步實驗到這裡結束,大家下一篇再見:)

--------------------------- 我是可愛的分割線 ----------------------------

最後博主借地宣傳一下,漳州程式設計小組招新了,這是一個面向漳州青少年資訊學/軟體設計的學習小組,有意向的同學點選連結,聯絡我吧。