久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

      如何使用workerman進行消息推送

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

      如何使用workerman進行消息推送

      Workerman是一款純PHP開發(fā)的開源高性能的PHP socket 服務器框架。被廣泛的用于手機app、移動通訊,微信小程序,手游服務端、網(wǎng)絡游戲、PHP聊天室、硬件通訊、智能家居、車聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領域的開發(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 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 找到 將端口改成你要監(jiān)聽的端口 我是2120 記住要在安全組里入方向添加白名單 // PHPSocketIO服務  $sender_io = new SocketIO(2120); 服務端設置完畢后 #php start.php start -d //開啟服務 并保持進程

      推送類 我用的tp5

      <?php namespace appindexmoudel;  /**  * 推送事件  * 典型調(diào)用方式:  * $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 推送內(nèi)容      */     protected $content = '';     /**      * 設置推送用戶,若參數(shù)留空則推送到所有在線用戶      *      * @param string $user      * @return $this      */     public function setUser($user = '')     {         $this->to_user = $user ? : '';         return $this;     }     /**      * 設置推送內(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 {  /**      * 推送一個字符串      */     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可以是自己網(wǎng)站的用戶id,以便針對uid推送以及統(tǒng)計在線人數(shù),但一定是唯一標識         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>');         });         // 后端推送來在線數(shù)據(jù)時         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)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號