PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用
前言
眾所周知,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)、智能家居等領(lǐ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 SwooleWebSocketServer("0.0.0.0總結(jié)
以上是生活随笔為你收集整理的PHP 接收 UDP包_php只能做网站?基于swoole+websocket开发双向通信应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mendelay为什么安装不了_你为什么
- 下一篇: mapbox 导航_狂甩不掉,骑行最稳手