這篇文章給大家分享的是有關使用workerman進行消息推送的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)-專業(yè)網站定制、快速模板網站建設、高性價比尋甸網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式尋甸網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋尋甸地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
Workerman是一款純PHP開發(fā)的開源高性能的PHP socket 服務器框架。被廣泛的用于手機app、移動通訊,微信小程序,手游服務端、網絡游戲、PHP聊天室、硬件通訊、智能家居、車聯(lián)網、物聯(lián)網等領域的開發(fā)。
支持TCP長連接,支持Websocket、HTTP等協(xié)議,支持自定義協(xié)議。擁有異步MySQL、異步redis、異步Http、異步消息隊列等眾多高性能組件。與之類似的還有swoole,MeepoPS。
首先下載workerman的Web消息推送系統(tǒng) web-msg-sender。
# wget http://www.workerman.net/download/senderzip # unzip senderzip #cd web-msg-sender #vim start.php
use Workerman\Worker; // composer 的 autoload 文件 include __DIR__ . '/vendor/autoload.php'; if(strpos(strtolower(PHP_OS), 'win') === 0) { exit("start.php not support windows, please use start_for_win.bat\n"); } // 標記是全局啟動 define('GLOBAL_START', 1); // 加載IO 和 Web require_once __DIR__ . '/start_io.php'; 可以注釋掉 webServer 服務 沒什么用 省點資源 // require_once __DIR__ . '/start_web.php'; // 運行所有服務 Worker::runAll();
保存
#vim start_io.php 找到 將端口改成你要監(jiān)聽的端口 我是2120 記住要在安全組里入方向添加白名單 // PHPSocketIO服務 $sender_io = new SocketIO(2120); 服務端設置完畢后 #php start.php start -d //開啟服務 并保持進程
推送類 我用的tp5
setUser($user_id)->setContent($string)->push();//連貫操作 * * Class WebSocket * @package app\index\moudel; */ class WebSocket { /** * @var string 目標用戶id */ protected $to_user = ''; /** * @var string 推送服務地址 */ protected $push_api_url = 'http://127.0.0.1:2000'; /** * @var string 推送內容 */ protected $content = ''; /** * 設置推送用戶,若參數(shù)留空則推送到所有在線用戶 * * @param string $user * @return $this */ public function setUser($user = '') { $this->to_user = $user ? : ''; return $this; } /** * 設置推送內容 * * @param string $content * @return $this */ public function setContent($content = '') { $this->content = $content; return $this; } /** * 推送 */ public function push() { $data = [ 'type' => 'publish', 'content' => $this->content, 'to' => $this->to_user, ]; // var_dump($data); // var_dump($this->push_api_url); $ch = curl_init (); curl_setopt($ch, CURLOPT_URL, $this->push_api_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); $res = curl_exec($ch); curl_close($ch); dump($res); } }
操作控制器
setUser($uid)->setContent($string)->push(); } /** * 推送目標頁 * * @return \think\response\View */ public function targetPage(){ return view(); } }
推送目標的前端顯示
Title
http://我自己的域名/index/index/pushAString?uid=123 ok 為推送成功 offline 為未在線 fail 為失敗
前端成功展示 321為我自定義的uid
感謝各位的閱讀!關于使用workerman進行消息推送的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!