站長資訊網
        最全最豐富的資訊網站

        如何使用workerman進行消息推送

        下面由workerman教程欄目給大家介紹使用workerman進行消息推送的方法,希望對需要的朋友有所幫助!

        如何使用workerman進行消息推送

        Workerman是一款純PHP開發的開源高性能的PHP socket 服務器框架。被廣泛的用于手機app、移動通訊,微信小程序,手游服務端、網絡游戲、PHP聊天室、硬件通訊、智能家居、車聯網、物聯網等領域的開發。

        支持TCP長連接,支持Websocket、HTTP等協議,支持自定義協議。擁有異步Mysql、異步Redis、異步Http、異步消息隊列等眾多高性能組件。與之類似的還有swoole,MeepoPS。

        首先下載workerman的Web消息推送系統 web-msg-sender。

        # wget http://www.workerman.net/download/senderzip # unzip senderzip #cd web-msg-sender  #vim start.php
        use WorkermanWorker; // 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.batn"); } // 標記是全局啟動 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 找到 將端口改成你要監聽的端口 我是2120 記住要在安全組里入方向添加白名單 // PHPSocketIO服務  $sender_io = new SocketIO(2120); 服務端設置完畢后 #php start.php start -d //開啟服務 并保持進程

        推送類 我用的tp5

        <?php namespace appindexmoudel;  /**  * 推送事件  * 典型調用方式:  * $push = new WebSocket();  * $push->setUser($user_id)->setContent($string)->push();//連貫操作  *  * Class WebSocket  * @package appindexmoudel;   */ class WebSocket {     /**      * @var string 目標用戶id      */     protected $to_user = '';     /**      * @var string 推送服務地址       */     protected $push_api_url = 'http://127.0.0.1:2000';     /**      * @var string 推送內容      */     protected $content = '';     /**      * 設置推送用戶,若參數留空則推送到所有在線用戶      *      * @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);     } }

        操作控制器

        <?php namespace appindexcontroller; use thinkController; use appindexmoudelWebSocket; class Index extends Controller {  /**      * 推送一個字符串      */     public function push_msg(){         $uid = input('uid','');//uid為空的時候推送給所有用戶         $string = '這是一個推送的測試';         $string = input('msg') ? : $string;         $push = new WebSocket();         $push->setUser($uid)->setContent($string)->push();     }     /**      * 推送目標頁      *      * @return thinkresponseView      */     public function targetPage(){         return view();     } }

        推送目標的前端顯示

        <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>Title</title> </head> <body> <strong id="count"></strong> <h1 id="target"></h1> </body> </html> <script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script> <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script> <script>     jQuery(function ($) {         // 連接服務端         var socket = io('http://39.106.132.216:2000/'); //這里當然填寫真實的地址了         // uid可以是自己網站的用戶id,以便針對uid推送以及統計在線人數,但一定是唯一標識         uid = 321;         // socket連接后以uid登錄         socket.on('connect', function () {             socket.emit('login', uid);         });         // 后端推送來消息時         socket.on('new_msg', function (msg) {             console.log("收到消息:" + msg);             $('#target').append(msg).append('<br>');         });         // 后端推送來在線數據時         socket.on('update_online_count', function (online_stat) {             console.log(online_stat);             $('#count').html(online_stat);         });     }) </script>
        http://我自己的域名/index/index/pushAString?uid=123 ok 為推送成功 offline 為未在線 fail 為失敗

        前端成功展示 321為我自定義的uid

        如何使用workerman進行消息推送

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品乱码久久久久久久久久久久| 四虎国产精品永久在线观看| 欧美激情精品久久久久久| 久久精品天天中文字幕人妻| 久久精品国产亚洲Aⅴ香蕉| 精品国产日产一区二区三区| 亚洲精品高清无码视频| 国产精品九九久久免费视频 | 欧美精品成人3d在线| 伊人久久大香线蕉精品| 99热门精品一区二区三区无码| 亚洲?V无码乱码国产精品| 国产精品免费久久| 国产精品久久国产精麻豆99网站| 少妇人妻偷人精品视频| 老子影院午夜精品无码| 国产精品久久久久久久午夜片| 欧美精品亚洲精品日韩1818| 国产精品美女一区二区视频| 亚洲精品~无码抽插| 欧美日韩专区麻豆精品在线| 国产欧美一区二区精品性色99| 亚洲国产精品成| 久久国产精品久久精品国产| 99久久精品国内| 国产精品你懂得| 狠狠色丁香婷婷综合精品视频| 99热在线日韩精品免费| 成人国内精品久久久久一区| 全球AV集中精品导航福利| 十八18禁国产精品www| 久久香综合精品久久伊人| 欧美精品hdvideosex4k| 久久精品人人槡人妻人人玩AV| 无码人妻精品一区二区三区66| 日韩精品中文字幕无码一区| 无码人妻精品一区二区三区久久久 | 亚洲国产成人久久精品99| 老湿亚洲永久精品ww47香蕉图片| 精品久久久久久无码人妻热| 国产一区麻豆剧传媒果冻精品|