摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。而它的最大特點(diǎn)就是,服務(wù)器可以主動(dòng)向客戶(hù)端推送信息,客戶(hù)端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話(huà),屬于服務(wù)器推送技術(shù)的一種。
目錄
初識(shí)Swoole
創(chuàng)建服務(wù)器(上)
創(chuàng)建服務(wù)器(下)
異步任務(wù)task
持續(xù)更新中。。。
1.創(chuàng)建HttpServer服務(wù)器HttpServer是基于swoole_server,所以swoole_server下的方法HttpServer都可以使用
httpsevrer它只能被客戶(hù)端喚起
1.測(cè)試
on("request", function($request, $response) { echo "nihao"; $response->end("hello swoole"); }); $http->start();
php執(zhí)行一下,打開(kāi)瀏覽器
服務(wù)器
這里我們發(fā)現(xiàn)了一個(gè)怪象
1.echo(var_dump,print_rd)的內(nèi)容在服務(wù)器現(xiàn)實(shí)
2.而瀏覽器的內(nèi)容只能通過(guò)end(內(nèi)容)的方式
end只能調(diào)用一次,如果需要分多次向客戶(hù)端發(fā)送數(shù)據(jù),請(qǐng)使用write方法
擴(kuò)展:咦這個(gè),很像我們平時(shí)訪問(wèn)的 XXX.com:80 如果我們想要訪問(wèn)下面的文件那怎么辦?
是不是想起我們之前tcp和udp都有用到的一個(gè)函數(shù) set,這個(gè)函數(shù)我把它理解為配置,那么我們就懟著它進(jìn)行配置
$http->set([ "enable_static_handler" => true, "document_root" => "/www/wwwroot/server",//設(shè)置根目錄這里根據(jù)你自己的路徑來(lái)寫(xiě) ]);
是不是很像配置虛擬地址?我們?cè)囍L問(wèn)server目錄下的test.html
有了!!
一般來(lái)說(shuō)設(shè)置了document_root的http_server流程是這樣的:
1.先會(huì)去根據(jù)url去訪問(wèn)document_root相對(duì)的路徑下的文件,跟配置域名訪問(wèn)文件的原理差不多
2.如果這個(gè)文件沒(méi)有,那么我們http_server才會(huì)順著執(zhí)行 $http->on("request"function($request, $response));做出相應(yīng)的相應(yīng)
1.特性:
(1)HTTP 協(xié)議有一個(gè)缺陷:通信只能由客戶(hù)端發(fā)起,做不到服務(wù)器主動(dòng)向客戶(hù)端推送信息。
而WebSocket它的最大特點(diǎn)就是,服務(wù)器可以主動(dòng)向客戶(hù)端推送信息,客戶(hù)端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話(huà),屬于服務(wù)器推送技術(shù)的一種。
(2)Web_Socket繼承http_server
由于web_server全雙工這個(gè)特性所以很適合做聊天室
2.說(shuō)到這我們就來(lái)做一個(gè)簡(jiǎn)單的測(cè)試!
(1)我們先寫(xiě)一個(gè)web_server.php的文件
$server = new swoole_websocket_server("0.0.0.0", 8811); //Web_Socket繼承http_server,所以它也可以擁有同樣的set方法 //包括 $server->on("request", function($request, $response) {}也是可以有的 $server->set( [ "enable_static_handler" => true, "document_root" => "/www/wwwroot/server", ] ); //監(jiān)聽(tīng)websocket連接打開(kāi)事件 $server->on("open", "onOpen"); function onOpen($server, $request) { echo "fd為:".$request->fd."已經(jīng)上線(xiàn) "; } // 監(jiān)聽(tīng)ws消息事件 $server->on("message", function ( $server, $frame) { var_dump($frame); $msg="fd為".$frame->fd."說(shuō):".$frame->data;//$frame->data為客戶(hù)端傳遞過(guò)來(lái)的信息 $server->push($frame->fd, $msg); }); $server->on("close", function ($server, $fd) { echo "client {$fd} closed "; }); $server->start();
(2)然后再寫(xiě)一個(gè)客戶(hù)端文件
你可以根據(jù)這個(gè)來(lái)寫(xiě)一個(gè)基于web_socket的聊天室,十分有趣
學(xué)習(xí)了tcp,udp,websocket,http的服務(wù),我們可以做一波總結(jié):
如果這篇文章對(duì)你有用,可以點(diǎn)個(gè)贊或者是收藏,算是對(duì)作者的鼓勵(lì)~
文檔地址傳送門(mén):https://wiki.swoole.com/wiki/...
推薦singwa老師的視頻教程:https://coding.imooc.com/clas...
另附上小弟網(wǎng)站。。。www.entercode.cn 推廣一波...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28648.html
摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。參加工作有一段時(shí)間了,偶爾會(huì)聽(tīng)到,對(duì)我這種小白粗略看下文檔都會(huì)覺(jué)得很牛逼。個(gè)人理解就是解決這樣應(yīng)用場(chǎng)景的。 目錄 初識(shí)Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 參加工作有一段時(shí)間了,偶爾會(huì)聽(tīng)到swoole,對(duì)我這種PHP小白粗略看下文檔都會(huì)覺(jué)得很牛逼。由于學(xué)習(xí)成本比較高,自身對(duì)網(wǎng)絡(luò)異...
摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。啟動(dòng)后,客戶(hù)端無(wú)需,直接可以向監(jiān)聽(tīng)的端口發(fā)送數(shù)據(jù)包。 目錄 初識(shí)Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 1.創(chuàng)建tcp服務(wù)器 先照著文檔創(chuàng)建一個(gè)tcp服務(wù)器
摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。什么是異步任務(wù)把當(dāng)前的任務(wù)異步投遞到進(jìn)程池中執(zhí)行,不影響接下來(lái)的事務(wù)。 目錄 初識(shí)Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 什么是異步任務(wù)? 1.把當(dāng)前的任務(wù)異步投遞到TaskWorker進(jìn)程池中執(zhí)行,不影響接下來(lái)的事務(wù)。舉個(gè)栗子: showImg(https://segmentfa...
摘要:例如現(xiàn)在的入門(mén)學(xué)習(xí)手記系列。收到粉絲留言和打賞的喜悅。安裝上一篇入門(mén)學(xué)習(xí)手記一,主要是介紹了的核心概念,是整個(gè)學(xué)習(xí)過(guò)程的基礎(chǔ)知識(shí)。新生成的類(lèi)似如下入門(mén)學(xué)習(xí)手記因?yàn)樯傻膬?nèi)容過(guò)多,我直接省略掉了。 showImg(https://segmentfault.com/img/bVbk5Nd?w=1150&h=599); 本人微信公眾號(hào):前端修煉之路,歡迎關(guān)注。 最近開(kāi)始想要維護(hù)一個(gè)個(gè)人的公眾...
摘要:本人微信公眾號(hào)前端修煉之路,歡迎關(guān)注。距離上一次更新這個(gè)系列,過(guò)去了兩天。最近實(shí)在是有點(diǎn)忙,沒(méi)有擠出時(shí)間整理。感覺(jué)日更還真是困難 showImg(https://segmentfault.com/img/bVbk5Nd?w=1150&h=599); 本人微信公眾號(hào):前端修煉之路,歡迎關(guān)注。 距離上一次更新這個(gè)系列,過(guò)去了兩天。最近實(shí)在是有點(diǎn)忙,沒(méi)有擠出時(shí)間整理。感覺(jué)日更還真是困難
閱讀 2108·2023-04-26 00:09
閱讀 3133·2021-09-26 10:12
閱讀 3502·2019-08-30 15:44
閱讀 2872·2019-08-30 13:47
閱讀 932·2019-08-23 17:56
閱讀 3236·2019-08-23 15:31
閱讀 481·2019-08-23 13:47
閱讀 2523·2019-08-23 11:56