GatewayWorker2.x 3.x 手冊(cè)
本手冊(cè)適用于GatewayWorker2.x版本以及3.x版本。
GatewayWorker 手冊(cè)
GatewayWorker基于Workerman開發(fā)的一個(gè)項(xiàng)目框架,用于快速開發(fā)TCP長(zhǎng)連接應(yīng)用,例如app推送服務(wù)端、即時(shí)IM服務(wù)端、游戲服務(wù)端、物聯(lián)網(wǎng)、智能家居等等
GatewayWorker使用經(jīng)典的Gateway和Worker進(jìn)程模型。Gateway進(jìn)程負(fù)責(zé)維持客戶端連接,并轉(zhuǎn)發(fā)客戶端的數(shù)據(jù)給BusinessWorker進(jìn)程處理,BusinessWorker進(jìn)程負(fù)責(zé)處理實(shí)際的業(yè)務(wù)邏輯(默認(rèn)調(diào)用Events.php處理業(yè)務(wù)),并將結(jié)果推送給對(duì)應(yīng)的客戶端。Gateway服務(wù)和BusinessWorker服務(wù)可以分開部署在不同的服務(wù)器上,實(shí)現(xiàn)分布式集群。
GatewayWorker提供非常方便的API,可以全局廣播數(shù)據(jù)、可以向某個(gè)群體廣播數(shù)據(jù)、也可以向某個(gè)特定客戶端推送數(shù)據(jù)。配合Workerman的定時(shí)器,也可以定時(shí)推送數(shù)據(jù)。
GatewayWorker 與 Workerman的關(guān)系
Workerman可以看做是一個(gè)純粹的socket類庫(kù),可以開發(fā)幾乎所有的網(wǎng)絡(luò)應(yīng)用,不管是TCP的還是UDP的,長(zhǎng)連接的還是短連接的。Workerman代碼精簡(jiǎn),功能強(qiáng)大,使用靈活,能夠快速開發(fā)出各種網(wǎng)絡(luò)應(yīng)用。同時(shí)Workerman相比GatewayWorker也更底層,需要開發(fā)者有一定的多進(jìn)程編程經(jīng)驗(yàn)。
因?yàn)榻^大多數(shù)開發(fā)者的目標(biāo)是基于Workerman開發(fā)TCP長(zhǎng)連接應(yīng)用,而長(zhǎng)連接應(yīng)用服務(wù)端有很多共同之處,例如它們有相同的進(jìn)程模型以及單發(fā)、群發(fā)、廣播等接口需求。所以才有了GatewayWorker框架,GatewayWorker是基于Workerman開發(fā)的一個(gè)TCP長(zhǎng)連接框架,實(shí)現(xiàn)了單發(fā)、群送、廣播等長(zhǎng)連接必用的接口。GatewayWorker框架實(shí)現(xiàn)了Gateway Worker進(jìn)程模型,天然支持分布式多服務(wù)器部署,擴(kuò)容縮容非常方便,能夠應(yīng)對(duì)海量并發(fā)連接??梢哉fGatewayWorker是基于Workerman實(shí)現(xiàn)的一個(gè)更完善的專門用于實(shí)現(xiàn)TCP長(zhǎng)連接的項(xiàng)目框架。
用GatewayWorker還是Workerman?
如果你的項(xiàng)目是長(zhǎng)連接并且需要客戶端與客戶端之間通訊,建議使用GatewayWorker。
短連接或者不需要客戶端與客戶端之間通訊的項(xiàng)目建議使用Workerman。
GatewayWorker不支持UDP監(jiān)聽,所以UDP服務(wù)請(qǐng)選擇Workerman。
如果你是一個(gè)有多進(jìn)程socket編程經(jīng)驗(yàn)的人,喜歡定制自己的進(jìn)程模型,可以選擇Workerman。
Linux系統(tǒng)快速開始(從一個(gè)精簡(jiǎn)的聊天demo開始)
1、下載demo
2、命令行運(yùn)行 unzip GatewayWorker.zip
解壓縮GatewayWorker.zip
3、命令行運(yùn)行 cd GatewayWorker
進(jìn)入GatewayWorker目錄
4、命令行運(yùn)行 php start.php start
啟動(dòng)GatewayWorker
5、新開幾個(gè)命令行窗口運(yùn)行 telnet 127.0.0.1 8282
,輸入任意字符即可聊天(非本機(jī)測(cè)試請(qǐng)將127.0.0.1替換成實(shí)際ip)。
注意
如果telnet超時(shí)請(qǐng)?jiān)O(shè)置服務(wù)器安全組將8282端口開放。
如果需要測(cè)試websocket協(xié)議,需要將start_gateway.php中tcp
改成websocket
Windows系統(tǒng)快速開始(從一個(gè)精簡(jiǎn)的聊天demo開始)
1、下載demo
2、解壓到任意位置
3、進(jìn)入GatewayWorker目錄
4、雙擊start_for_win.bat啟動(dòng)。(如果出現(xiàn)錯(cuò)誤請(qǐng)參考這里設(shè)置php環(huán)境變量)
5、新開幾個(gè)cmd命令行窗口運(yùn)行 telnet 127.0.0.1 8282
,輸入任意字符即可聊天(非本機(jī)測(cè)試請(qǐng)將127.0.0.1替換成實(shí)際ip,)。
注意
windows系統(tǒng)telnet可能需要安裝,安裝方法可以baidu下
windows系統(tǒng)telnet是逐字符發(fā)送的,可能無法發(fā)送完整的單詞語(yǔ)句
如果telnet超時(shí)請(qǐng)?jiān)O(shè)置服務(wù)器安全組將8282端口開放
如果需要測(cè)試websocket協(xié)議,需要將start_gateway.php中tcp
改成websocket
GatewayWorker 源碼地址
只包含GatewayWorker內(nèi)核
https://github.com/walkor/GatewayWorker