您好,登錄后才能下訂單哦!
這篇文章主要介紹了swoole各種服務器的區別是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
server.php
//創建Server對象,監聽 127.0.0.1:9501端口 $serv = new Swoole\Server("127.0.0.1", 9501); //監聽連接進入事件 $serv->on('Connect', function ($serv, $fd) { echo "Client: Connect.\n"; }); //監聽數據接收事件 $serv->on('Receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, "Server: ".$data); }); //監聽連接關閉事件 $serv->on('Close', function ($serv, $fd) { echo "Client: Close.\n"; }); //啟動服務器 $serv->start();
這里就創建了一個TCP服務器,監聽本機9501端口。它的邏輯很簡單,當客戶端Socket通過網絡發送一個 hello 字符串時,服務器會回復一個 Server: hello 字符串。
Server是異步服務器,所以是通過監聽事件的方式來編寫程序的。當對應的事件發生時底層會主動回調指定的函數。如當有新的TCP連接進入時會執行onConnect事件回調,當某個連接向服務器發送數據時會回調onReceive函數。
UDP服務器與TCP服務器不同,UDP沒有連接的概念。啟動Server后,客戶端無需Connect,直接可以向Server監聽的9502端口發送數據包。對應的事件為onPacket。
$clientInfo是客戶端的相關信息,是一個數組,有客戶端的IP和端口等內容調用 $server->sendto 方法向客戶端發送數據
Http服務器只需要關注請求響應即可,所以只需要監聽一個onRequest事件。當有新的Http請求進入就會觸發此事件。事件回調函數有2個參數,一個是$request對象,包含了請求的相關信息,如GET/POST請求的數據。
另外一個是response對象,對request的響應可以通過操作response對象來完成。$response->end()方法表示輸出一段HTML內容,并結束此請求。
0.0.0.0 表示監聽所有IP地址,一臺服務器可能同時有多個IP,如127.0.0.1本地回環IP、192.168.1.100局域網IP、210.127.20.2 外網IP,這里也可以單獨指定監聽一個IP9501 監聽的端口,如果被占用程序會拋出致命錯誤,中斷執行。
WebSocket服務器是建立在Http服務器之上的長連接服務器,客戶端首先會發送一個Http的請求與服務器進行握手。
握手成功后會觸發onOpen事件,表示連接已就緒,onOpen函數中可以得到$request對象,包含了Http握手的相關信息,如GET參數、Cookie、Http頭信息等。
建立連接后客戶端與服務器端就可以雙向通信了。
客戶端向服務器端發送信息時,服務器端觸發onMessage事件回調服務器端可以調用$server->push()向某個客戶端(使用$fd標識符)發送消息服務器端可以設置onHandShake事件回調來手工處理WebSocket握手。
swoole_http_server是swoole_server的子類,內置了Http的支持swoole_websocket_server是swoole_http_server的子類, 內置了WebSocket的支持
感謝你能夠認真閱讀完這篇文章,希望小編分享的“swoole各種服務器的區別是什么”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。