swoole各種服務(wù)器的區(qū)別是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹了swoole各種服務(wù)器的區(qū)別是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到南芬網(wǎng)站設(shè)計(jì)與南芬網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋南芬地區(qū)。

server.php                                                    

//創(chuàng)建Server對(duì)象,監(jiān)聽 127.0.0.1:9501端口
$serv = new Swoole\Server("127.0.0.1", 9501); 
//監(jiān)聽連接進(jìn)入事件
$serv->on('Connect', function ($serv, $fd) {  
    echo "Client: Connect.\n";
});
//監(jiān)聽數(shù)據(jù)接收事件
$serv->on('Receive', function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: ".$data);
});
//監(jiān)聽連接關(guān)閉事件
$serv->on('Close', function ($serv, $fd) {
    echo "Client: Close.\n";
});
//啟動(dòng)服務(wù)器
$serv->start();

這里就創(chuàng)建了一個(gè)TCP服務(wù)器,監(jiān)聽本機(jī)9501端口。它的邏輯很簡(jiǎn)單,當(dāng)客戶端Socket通過(guò)網(wǎng)絡(luò)發(fā)送一個(gè) hello 字符串時(shí),服務(wù)器會(huì)回復(fù)一個(gè) Server: hello 字符串。

Server是異步服務(wù)器,所以是通過(guò)監(jiān)聽事件的方式來(lái)編寫程序的。當(dāng)對(duì)應(yīng)的事件發(fā)生時(shí)底層會(huì)主動(dòng)回調(diào)指定的函數(shù)。如當(dāng)有新的TCP連接進(jìn)入時(shí)會(huì)執(zhí)行onConnect事件回調(diào),當(dāng)某個(gè)連接向服務(wù)器發(fā)送數(shù)據(jù)時(shí)會(huì)回調(diào)onReceive函數(shù)。

UDP服務(wù)器與TCP服務(wù)器不同,UDP沒(méi)有連接的概念。啟動(dòng)Server后,客戶端無(wú)需Connect,直接可以向Server監(jiān)聽的9502端口發(fā)送數(shù)據(jù)包。對(duì)應(yīng)的事件為onPacket。

$clientInfo是客戶端的相關(guān)信息,是一個(gè)數(shù)組,有客戶端的IP和端口等內(nèi)容調(diào)用 $server->sendto 方法向客戶端發(fā)送數(shù)據(jù)

Http服務(wù)器只需要關(guān)注請(qǐng)求響應(yīng)即可,所以只需要監(jiān)聽一個(gè)onRequest事件。當(dāng)有新的Http請(qǐng)求進(jìn)入就會(huì)觸發(fā)此事件。事件回調(diào)函數(shù)有2個(gè)參數(shù),一個(gè)是$request對(duì)象,包含了請(qǐng)求的相關(guān)信息,如GET/POST請(qǐng)求的數(shù)據(jù)。

另外一個(gè)是response對(duì)象,對(duì)request的響應(yīng)可以通過(guò)操作response對(duì)象來(lái)完成。$response->end()方法表示輸出一段HTML內(nèi)容,并結(jié)束此請(qǐng)求。

0.0.0.0 表示監(jiān)聽所有IP地址,一臺(tái)服務(wù)器可能同時(shí)有多個(gè)IP,如127.0.0.1本地回環(huán)IP、192.168.1.100局域網(wǎng)IP、210.127.20.2 外網(wǎng)IP,這里也可以單獨(dú)指定監(jiān)聽一個(gè)IP9501 監(jiān)聽的端口,如果被占用程序會(huì)拋出致命錯(cuò)誤,中斷執(zhí)行。

WebSocket服務(wù)器是建立在Http服務(wù)器之上的長(zhǎng)連接服務(wù)器,客戶端首先會(huì)發(fā)送一個(gè)Http的請(qǐng)求與服務(wù)器進(jìn)行握手。

握手成功后會(huì)觸發(fā)onOpen事件,表示連接已就緒,onOpen函數(shù)中可以得到$request對(duì)象,包含了Http握手的相關(guān)信息,如GET參數(shù)、Cookie、Http頭信息等。

建立連接后客戶端與服務(wù)器端就可以雙向通信了。

客戶端向服務(wù)器端發(fā)送信息時(shí),服務(wù)器端觸發(fā)onMessage事件回調(diào)服務(wù)器端可以調(diào)用$server->push()向某個(gè)客戶端(使用$fd標(biāo)識(shí)符)發(fā)送消息服務(wù)器端可以設(shè)置onHandShake事件回調(diào)來(lái)手工處理WebSocket握手。

swoole_http_server是swoole_server的子類,內(nèi)置了Http的支持swoole_websocket_server是swoole_http_server的子類, 內(nèi)置了WebSocket的支持

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“swoole各種服務(wù)器的區(qū)別是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

分享文章:swoole各種服務(wù)器的區(qū)別是什么-創(chuàng)新互聯(lián)
URL標(biāo)題:http://muchs.cn/article44/dpppee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、定制網(wǎng)站、電子商務(wù)企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司