站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        如何使用workerman進(jìn)行消息推送

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

        如何使用workerman進(jìn)行消息推送

        Workerman是一款純PHP開發(fā)的開源高性能的PHP socket 服務(wù)器框架。被廣泛的用于手機(jī)app、移動(dòng)通訊,微信小程序,手游服務(wù)端、網(wǎng)絡(luò)游戲、PHP聊天室、硬件通訊、智能家居、車聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領(lǐng)域的開發(fā)。

        支持TCP長(zhǎng)連接,支持Websocket、HTTP等協(xié)議,支持自定義協(xié)議。擁有異步Mysql、異步Redis、異步Http、異步消息隊(duì)列等眾多高性能組件。與之類似的還有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 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"); } // 標(biāo)記是全局啟動(dòng) define('GLOBAL_START', 1); // 加載IO 和 Web require_once __DIR__ . '/start_io.php'; 可以注釋掉 webServer 服務(wù) 沒什么用  省點(diǎn)資源 // require_once __DIR__ . '/start_web.php'; // 運(yùn)行所有服務(wù) Worker::runAll();

        保存

        #vim start_io.php 找到 將端口改成你要監(jiān)聽的端口 我是2120 記住要在安全組里入方向添加白名單 // PHPSocketIO服務(wù)  $sender_io = new SocketIO(2120); 服務(wù)端設(shè)置完畢后 #php start.php start -d //開啟服務(wù) 并保持進(jìn)程

        推送類 我用的tp5

        <?php namespace appindexmoudel;  /**  * 推送事件  * 典型調(diào)用方式:  * $push = new WebSocket();  * $push->setUser($user_id)->setContent($string)->push();//連貫操作  *  * Class WebSocket  * @package appindexmoudel;   */ class WebSocket {     /**      * @var string 目標(biāo)用戶id      */     protected $to_user = '';     /**      * @var string 推送服務(wù)地址       */     protected $push_api_url = 'http://127.0.0.1:2000';     /**      * @var string 推送內(nèi)容      */     protected $content = '';     /**      * 設(shè)置推送用戶,若參數(shù)留空則推送到所有在線用戶      *      * @param string $user      * @return $this      */     public function setUser($user = '')     {         $this->to_user = $user ? : '';         return $this;     }     /**      * 設(shè)置推送內(nèi)容      *      * @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 {  /**      * 推送一個(gè)字符串      */     public function push_msg(){         $uid = input('uid','');//uid為空的時(shí)候推送給所有用戶         $string = '這是一個(gè)推送的測(cè)試';         $string = input('msg') ? : $string;         $push = new WebSocket();         $push->setUser($uid)->setContent($string)->push();     }     /**      * 推送目標(biāo)頁      *      * @return thinkresponseView      */     public function targetPage(){         return view();     } }

        推送目標(biāo)的前端顯示

        <!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 ($) {         // 連接服務(wù)端         var socket = io('http://39.106.132.216:2000/'); //這里當(dāng)然填寫真實(shí)的地址了         // uid可以是自己網(wǎng)站的用戶id,以便針對(duì)uid推送以及統(tǒng)計(jì)在線人數(shù),但一定是唯一標(biāo)識(shí)         uid = 321;         // socket連接后以u(píng)id登錄         socket.on('connect', function () {             socket.emit('login', uid);         });         // 后端推送來消息時(shí)         socket.on('new_msg', function (msg) {             console.log("收到消息:" + msg);             $('#target').append(msg).append('<br>');         });         // 后端推送來在線數(shù)據(jù)時(shí)         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進(jìn)行消息推送

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 无码人妻精品一区二区| 国产女人精品视频国产灰线| 精品国偷自产在线| 黑巨人与欧美精品一区| 国产精品福利在线观看| 无码精品久久久天天影视| 乱人伦人妻精品一区二区| 国产精品国产三级国产a| 欧美精品亚洲精品日韩| 国产精品亚洲日韩欧美色窝窝色欲| 日本精品一区二区久久久| 777欧美午夜精品影院| 99久久精品国产高清一区二区| 亚洲精品亚洲人成人网| 欧美日韩国产中文精品字幕自在自线 | 久久99国产精品成人欧美| 久久久精品午夜免费不卡| 99久久99这里只有免费费精品| 久久ww精品w免费人成| 亚洲av永久无码精品网站 | 精品国产免费一区二区三区香蕉 | 亚洲精品tv久久久久久久久| 亚洲国产成人精品女人久久久 | 国产精品久久成人影院| 国产精品男男视频一区二区三区| 精品人妻人人做人人爽| 真实国产精品vr专区| 亚洲AV成人精品日韩一区18p| 久久精品国产亚洲Aⅴ蜜臀色欲| 国产精品自在线拍国产第一页| 91精品免费久久久久久久久| 四虎成人精品免费影院| 欧美精品一本久久男人的天堂 | 精品人妻久久久久久888| 嫖妓丰满肥熟妇在线精品| 曰韩精品无码一区二区三区| 真实国产精品vr专区| 人妻少妇精品视中文字幕国语| 人妻少妇精品视频二区| 久久久一本精品99久久精品88| 久久香综合精品久久伊人|