整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          php只能做網(wǎng)站?基于swoole+websocket開發(fā)雙向通信應用

          眾所周知,PHP用于開發(fā)基于HTTP協(xié)議的網(wǎng)站應用非常便捷。而HTTP協(xié)議是一種單向的通信協(xié)議,只能接收客戶端的請求,然后響應請求,不能主動向客戶端推送信息。因此,一些實時性要求比較高的應用,如實時聊天、直播應用、在線網(wǎng)頁游戲等,就不適合采用HTTP協(xié)議。即使采用客戶端主動輪詢的方式來間接實現(xiàn)雙向通信,也會較大地增加服務器的負擔,增大代碼的復雜性,不利于維護。

          雙向通信

          那么,是否PHP就無法用來開發(fā)雙向通信的應用呢?

          答案是否定的。PHP內(nèi)置socket通信支持,可以與linux程序基于socket進行雙向通信。php swoole框架封裝了一個websocket服務端,基于此可以很方便地建立一個與html5的websocket客戶端進行通信的服務。

          一、Swoole介紹

          swoole

          Swoole是一個面向生產(chǎn)環(huán)境的 PHP 異步網(wǎng)絡通信引擎,使 PHP 開發(fā)人員可以編寫高性能的異步并發(fā) TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 可以廣泛應用于互聯(lián)網(wǎng)、移動通信、企業(yè)軟件、云計算、網(wǎng)絡游戲、物聯(lián)網(wǎng)(IOT)、車聯(lián)網(wǎng)、智能家居等領域。 使用 PHP + Swoole 作為網(wǎng)絡通信框架,可以使企業(yè) IT 研發(fā)團隊的效率大大提升。

          swoole支持用于搭建多種server,包括http server、websocket server、tcp server、redis server等等。這里我們使用到的是其中的websocket server。

          二、WebSocket介紹

          WebSocket

          WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議。WebSocket通信協(xié)議于2011年被IETF定為標準RFC 6455,并由RFC7936補充規(guī)范。WebSocket API也被W3C定為標準。

          WebSocket使得客戶端和服務器之間的數(shù)據(jù)交換變得更加簡單,允許服務端主動向客戶端推送數(shù)據(jù)。在WebSocket API中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸。

          簡單地來說,websocket協(xié)議實現(xiàn)了瀏覽器和服務器之間的雙向通信。而html5原生支持websocket協(xié)議。

          三、swoole websocket 服務端demo

          1.安裝swoole

          swoole以php擴展的形式進行加載,首先需要為你的php安裝swoole擴展,安裝命令如下:

          pecl install swoole
          

          安裝成功后在php.ini文件加上extension=swoole.so加載擴展

          2.啟動服務端

          新建一個php文件,文件名為server.php,文件內(nèi)容如下:

          $server = new Swoole\WebSocket\Server("0.0.0.0", 9501);
          $server->on('open', function (Swoole\WebSocket\Server $server, $request) {
           echo "server: handshake success with fd{$request->fd}\n";
           });
          $server->on('message', function (Swoole\WebSocket\Server $server, $frame) {
           echo "receive from {$frame->fd}:{$frame->data}\n";
           $server->push($frame->fd, "this is server");
           });
          $server->on('close', function ($ser, $fd) {
           echo "client {$fd} closed\n";
           });
          $server->on('request', function (Swoole\Http\Request $request, Swoole\Http\Response $response) {
           global $server;//調(diào)用外部的server
           // $server->connections 遍歷所有websocket連接用戶的fd,給所有用戶推送
           foreach ($server->connections as $fd) {
           // 需要先判斷是否是正確的websocket連接,否則有可能會push失敗
           if ($server->isEstablished($fd)) {
           $server->push($fd, $request->get['message']);
           }
           }
          });
          $server->start();
          

          此服務監(jiān)聽本機的9501端口,運行命令 php server.php 啟動服務。

          四、HTML5 WebSocket 客戶端demo

          1.客戶端代碼

          新建一個testServer.html文件,寫入以下內(nèi)容:

          <!doctype html>
          <html>
          <head>
           <title>測試WebSocket</title>
          </head>
          <body>
           <script>
           var ws = new WebSocket("ws://【服務端IP】:9501");
           ws.onopen = function(event){
           console.log("connected!");
           ws.send("hello server,this is client!");
           };
           ws.onmessage= function(event){
           console.log("server message:"+event.data);
           }
           ws.onclose = function(event){
           console.log("closed!");
           };
           </script>
          </body>
          </html>
          

          將【服務端IP】替換成swoole服務端ip,保存文件。

          五、測試demo

          (1) 訪問步驟四的客戶端demo頁面,首先與服務端建立連接,查看瀏覽器console log,可以看到顯示:

          connected!

          (2) 查看linux控制臺,可以看到顯示:

          server: handshake success with fd1

          (3) 接著客戶端向服務端發(fā)了一條消息,服務端控制臺顯示:

          receive from fd1:hello server,this is client!

          (4) 服務端收到消息后,向客戶端回復了一條消息,客戶端控制臺顯示:

          server message:this is server

          以上就是基于swoole+websocket開發(fā)雙向通信應用的簡單演示,在線聊天、網(wǎng)頁游戲等實時通信的應用也可基于此方式進行開發(fā)。php開發(fā)效率高,可以更快、更高效地進行此類應用地開發(fā),節(jié)約開發(fā)成本。

          大家如果還有什么疑問,可以關注公眾號“全棧社區(qū)”進行提問。


          • 關注微信公眾號“全棧社區(qū)”,可獲取更多站長、開發(fā)者必備的前端、后端、服務器技術干貨。
          • 旭貓云19元VPS:www.xumaoyun.com

           隨著市場對前端開發(fā)技術的使用越來越廣泛,技術要求越來越高,這也使得對前端開發(fā)人才的需求量越來越多,要求也越來越高。盡管如今學習前端開發(fā)的人趨之若鶩,不過零基礎學習前端開發(fā),這三個問題必須了解清楚。

           一、零基礎學習前端開發(fā)需要哪些技術?

            ①初級階段:

            html:常見標簽,html5新增的,語義化標簽等等

            css:選擇器,背景,文本,鏈接,列表,盒模型,定位,浮動,css3新增的屬性

            bootstrap:柵格化系統(tǒng),按鈕,表單,導航....

            javascript: 數(shù)據(jù)類型,對象,函數(shù),運算符,語句,DOM,選擇器,操作,事件...

            jQuery: 選擇器,dom,鏈式調(diào)用,事件,動畫

            ②進階階段:

            入門:js的面向?qū)ο缶幊蹋?zepto,移動端,響應式,css3d,bootstrap組件,jqueryUI

            高級數(shù)據(jù):面向?qū)ο筮M階,ajax,json,(后端語言:php)

            新興的技術:html5: socket, 多媒體,canvas,圖像處理,web works,數(shù)據(jù)存儲,跨域。

            技術拓展:地圖開發(fā),微信開發(fā),大數(shù)據(jù)可視化...

            后端服務:nodejs:文件系統(tǒng),路由,mongodb, express....

           ?、鄹呒夒A段:

            架構基礎:設計模式,MVC, MVVM

            模塊化開發(fā):amd,cmd, commonjs,systemjs

            css預編譯:less, sass,stylus

            前沿規(guī)范:ES5, ES6, ES2016, ES2017, typescript

            新型框架:backbone, vue, vuex, angular, react, redux, reflux, flux, angular5等等。

          二、零基礎學習前端開發(fā)可以從事哪些工作?

            pc端:基礎技術,一些框架

            移動端:基礎,移動端框架

            nodejs服務器端:了解服務器,以及node的框架

            游戲端:html5游戲,cavnas

            大數(shù)據(jù)可視化:highcharts等等

            前端架構:設計模式,架構,開發(fā)工程化工具,通用組件,通用插件

            全棧工程師,會前端也會后端,

            其他語言可能是偽全棧(只能寫后臺管理系統(tǒng))

            混合開發(fā):react native

          三、零基礎學習前端開發(fā)如何成為高級工程師

            在工作中,我們都是在寫項目,所以學習我們不能僅僅學習某個點,更重要的是多寫項目。我們需要在培訓學習的過程中實戰(zhàn)各個領域的項目,了解更多的技術。

          如果你對前端開發(fā)學習感興趣想要免費教程可私信,還可閱讀:學習web前端需要掌握哪些技術?學web前端開發(fā)需要多久? - 千鋒教育

          下HTMl5培訓越來越激烈,許多的培訓機構更是打出了各種誘人的廣告,也正是因為這些廣告無疑增加了我們的選擇難度。我們該如何選擇HTML5培訓班呢?且看華清遠見如何為初學者支招

          首先了解HTML5培訓是什么?

          培訓HTML5不僅是簡單的學習HTML5的知識,在學習的過程中我們會涉及到,CSS、前端、js的知識的,所以HTMl5也可以稱之為前端培訓。對于網(wǎng)站來講可以分為前端和后端,前端的應用和網(wǎng)頁直接展示給客戶而后端的只是為前臺服務的。由此可知,前端的重要性不言而喻。目前微信、淘寶、一些游戲等等都是通過前端開發(fā)來做的,這其中UI在整個前端工作中所占比重為10%,js所占比重為30%左右,剩余的大部分工作都是通過HTML5開發(fā)來完成的。目前HTML5培訓主要集中在培訓學員HTML5相關技能方面。

          其次,了解HTML5培訓主要學習什么?

          第一階段:web頁面制作基礎;精通掌握HTML5應用,掌握CSS在開發(fā)中的應用,學會頁面標準化布局。

          第二階段:能獨立設計具有創(chuàng)意、能夠獨立設計出手機移動網(wǎng)站、掌握標準化布局中的各項技術、符合需求的web界面,掌握頁面設計和原型圖制作。

          第三階段:掌握js的基本抄作流程與基本語法,結合HTML實現(xiàn)代表性的在制作出js特效制作,可以獨立完成第三方特效插件和網(wǎng)頁中常見特效的使用。

          第四階段:后端開發(fā)技術,了解 PHP 語法,掌握 Socket 長連接實時網(wǎng)絡通信技術,掌握 NoSQL中的MongoDB 的應用,掌握http與web工作原理,解 MySQL 數(shù)據(jù)庫的基本操作。

          第五階段:移動互聯(lián)網(wǎng)應用,掌握 HTML5 新增智能表單的使用,制作播放器對搜索引擎優(yōu)化進行講解,掌握優(yōu)化的各種方式,掌握響應式頁面布局技術,掌握微網(wǎng)站的開發(fā)過程及開發(fā)移動端web應用。

          第六階段:特效開發(fā)高級實戰(zhàn),利用jQuery框架進行js特效開發(fā),掌握 AngularJS 框架應用、掌握 Bootstrap 的使用,掌握 jQuery Mobile 的應用開發(fā)移動應用程序。

          第七階段:企業(yè)級應用開發(fā),使用 web 制作 LBS 應用程序;在應用中使用多線程技術完成 UI 交互與數(shù)據(jù)處理并行,了解和掌握 PhoneGap 的安裝和操作,能夠使用 PhoneGap 進行封裝,實現(xiàn)跨平臺的應用,了解和掌握觸屏和手勢相關的事件使用方式,能夠通過媒體查詢和多列布局屬性實現(xiàn)屏幕自適應,實現(xiàn)響應式布局了解和掌握不同的設計模式以及其適合的企業(yè)APP,并且能夠?qū)⑵鋺迷诔绦蛟O計中。

          最后,怎樣選擇HTML5培訓機構?

          第一,初學者在選擇的時候不能只看誰家的廣告做的多、口號響亮,而是要看能不到真正學到技術,得到鍛煉;

          第二,選擇的時候不能只聽別人的評價,一定要去做實地考察,培訓班允許的情況下去試聽相應的課程;在試聽課程的過程中感受課程設置是否符合自身的成長;

          第三,對于相應的就業(yè)服務一定要搞清楚,確定是否推薦就業(yè)、是否保障最低薪資等等。

          華清遠見初學者在選擇HTML5培訓機構時,一定要慎重對自己的未來負責。


          主站蜘蛛池模板: 日本内射精品一区二区视频| 日韩经典精品无码一区| 在线观看一区二区精品视频| 日韩一区二区三区视频| 久久久久人妻一区精品色| 日韩精品无码视频一区二区蜜桃| 国产日韩精品一区二区三区| 亚洲av成人一区二区三区| 无码人妻久久一区二区三区| 成人免费一区二区三区| 一区二区三区精品高清视频免费在线播放| 2021国产精品一区二区在线| 无码国产精成人午夜视频一区二区| 亚洲成av人片一区二区三区| 国产一区二区三区精品久久呦| 亚洲大尺度无码无码专线一区| 久久伊人精品一区二区三区| 久久一区二区明星换脸| 日韩精品无码一区二区三区AV| 中文字幕一区日韩在线视频| a级午夜毛片免费一区二区| 国产一区二区精品久久岳| 精品国产不卡一区二区三区| 动漫精品专区一区二区三区不卡| 日本中文一区二区三区亚洲| 激情综合丝袜美女一区二区| 色一情一乱一伦一区二区三区日本 | 亚洲一区二区三区在线网站| 亚洲国产一区在线观看| 在线播放偷拍一区精品| 无码日韩精品一区二区免费| 成人毛片无码一区二区| 国产精品盗摄一区二区在线| 一区二区三区四区在线观看视频 | 国产在线aaa片一区二区99| 亚洲无线码在线一区观看| 国产高清一区二区三区四区| 日本丰满少妇一区二区三区| 国产视频福利一区| 国产精品无圣光一区二区| 一区精品麻豆入口|