1、基礎知識
一、Workerman是一款純PHP開發的開源高性能的PHP socket 服務器框架。被普遍的用於手機app、移動通信等領域的開發。 支持TCP長鏈接,支持Websocket、HTTP等協議,支持自定義協議。擁有異步Mysql、異步Redis、異步Http、異步消息隊列等衆多高性能組件。
二、GatewayWorker基於Workerman開發的一個框架,支持多協議多端口監聽,支持分佈式多機部署,用於快速開發長鏈接應用,例如移動通信、物聯網、智能家居、遊戲服務端、聊天室等等。
三、gateClient是用來輔助 workerman或者是gateway進行用戶分組以及向用戶發送信息的組件,同時,可以快速便捷的將原有系統的uid和clientid綁定起來。
官網:http://www.workerman.net/php
2、基本理論
一、基本原則
現有mvc框架項目與GatewayWorker獨立部署互不干擾
全部的業務邏輯都由網站頁面post/get到mvc框架中完成
GatewayWorker不接受客戶端發來的數據,即GatewayWorker不處理任何業務邏輯,GatewayWorker僅僅當作一個單向的推送通道
僅當mvc框架須要向瀏覽器主動推送數據時纔在mvc框架中調用Gateway的APIGatewayClient完成推送
二、基本步驟
一、網站頁面創建與GatewayWorker的websocket鏈接
二、GatewayWorker發現有頁面發起鏈接時,將對應鏈接的client_id發給網站頁面
三、網站頁面收到client_id後觸發一個ajax請求(假設是bind.php)將client_id發到mvc後端
四、mvc後端bind.php收到client_id後利用GatewayClient調用Gateway::bindUid($client_id, $uid)將client_id與當前uid(用戶id或者客戶端惟一標識)綁定。若是有羣組、羣發功能,也能夠利用Gateway::joinGroup($client_id, $group_id)將client_id加入到對應分組(重點 有了這個之後後面才能發消息之類的)
五、頁面發起的全部請求都直接post/get到mvc框架統一處理,包括髮送消息(發消息本身自定義格式)
六、mvc框架處理業務過程當中須要向某個uid或者某個羣組發送數據時,直接調用GatewayClient的接口Gateway::sendToUid Gateway::sendToGroup 等發送便可前端
3、搭建gateway
一、下載gateway
http://www.workerman.net/download
二、配置events文件
在頁面發起鏈接時候,將對應鏈接的clent_id發給網站頁面。咱們在此文件加上函數web
4、服務端的配置ajax
一、綁定client_id 並加入分組
在此方法中咱們必定要把收到的client_id加入分組中,這裏簡單點前臺頁面直接設置room_id爲1。
二、收發消息
sql
以後咱們就能夠在這個方法裏面 進行咱們的一些業務邏輯 接入咱們的項目後端