PHP開發客服系統之GatewayWorker篇

1 引言

上一小節,我們瞭解了一下開發客服系統的思路,所以本小節咱們就開門見山的來講吧,這一小節我們會接觸幾個開發過程中常見的一個函數,其它沒有講到的可以看下官方文檔的說明哦。 

開發文檔:http://workerman.net/gatewaydoc/  

 

2 項目的目錄結構

下載地址:https://www.workerman.net/download

 

下載解壓後的目錄如下:

.
├── Applications // 應用項目
│   └── YourApp  // 其中一個項目目錄,目錄名可以自定義
│       ├── Events.php                 // 處理業務邏輯
│       ├── start_gateway.php          // gateway進程啓動腳本,包括端口號等設置
│       ├── start_businessworker.php   // businessWorker進程啓動腳本
│       └── start_register.php         // 註冊服務啓動腳本
│
├── start.php // 全局啓動腳本
│
└── vendor    // GatewayWorker框架和Workerman框架源碼目錄

 由於我們是使用websocket協議來開發客服系統的,所以我們得先把協議修改爲websocket,修改如下所示:

3 啓動應用 

在window開發的同學可以雙擊start_for_win.bat來啓動應用,在Linux或Mac開發的同學可以使用命令php start.php stort來啓動應用,如果沒有報錯的話,那說明配置沒問題,接下來就可以進入開發階段了

 

 window下正常啓動後的效果

 

 4 處理業務邏輯

GatewayWorker的業務邏輯都有Events.php來處理,也就是說在開發過程中我們只需要關注該文件即可。

4.1 Events類中的回調函數

當businessWorker進程啓動時觸發

void Event::onWorkerStart(Worker $businessWorker);

 當客戶端連接上gateway進程時觸發。

void Events::onConnect(string $client_id);

當收到一個客戶端請求後觸發 

void Events::onMessage(string $client_id, mixed $recv_data);

客戶端與Gateway的連接斷開時觸發。 

void Events::onClose(string $client_id);

當businessWorker進程退出時觸發。 

void Event::onWorkerStop(Worker $businessWorker);

在開發客服系統的過程中,各個回調函數所處理的邏輯

 onWorkerStart:初始化數據(數據庫連接)或啓動定時任務(數據統計)等

 onConnect:過濾連接,比如不讓還名單的訪客連接到客服系統

 onMessage:處理主要的業務邏輯(訪客及客服的初始化、轉發聊天數據、轉接訪客、評價等)

 onClose:用戶離線或客服離線後的處理

 onWorkerStop:不處理可留空

 4.2 Gateway類

向客戶端client_id發送數據 

void Gateway::sendToClient(string $client_id, string $send_data);

將client_id與uid綁定 

void Gateway::bindUid(string $client_id, mixed $uid);

判斷$uid是否在線 

int Gateway::isUidOnline(mixed $uid);

向uid綁定的所有在線client_id發送數據

void Gateway::sendToUid(mixed $uid, string $message);

將client_id加入某個組 

void Gateway::joinGroup(string $client_id, mixed $group);

將client_id從某個組中刪除 

void Gateway::leaveGroup(string $client_id, mixed $group);

 向某個分組的所有在線client_id發送數據

void Gateway::sendToGroup(mixed $group, string $message [, array $exclude_client_id = null [, bool $raw = false]]);

 sendToClient:客服連接到客服系統時可以給該訪客發送一些歡迎信息等

 bindUid:將訪客的client_id與用戶ID綁定,方便與現有的系統業務結合

 isUidOnline:判斷訪客是否在線,如果不在線的話可以將該信息設爲未讀信息

 sendToUid:根據uid給訪客發送數據

 joinGroup:加入某個分組,推薦一個客服一個分組,這樣客服就可以給自己服務的訪客廣播消息

 leaveGroup:離開某個分組,做轉接功能時,可以將該訪客從當前分組中刪除,然後在加入轉接後的分組

 sendToGroup:給當前分組廣播消息

Gateway類提供的接口還有其它的,這裏筆者只列出了開發客服系統中常見的幾個

小結

本小節就先介紹到這裏了,下一小節我們來了解一下如何通過JS連接到GatewayWorker

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章