<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                這里用得不是workerman框架而是gatewayworker手冊。 因為做的是客戶端與客戶端之間的通訊。 php方面使用的是thinkphp框架。 現在開始重新講一下怎么搞這個單對單聊天系統。 首先下載好thinkphp5與gatewayworker之后把gate(簡讀)放到thinkphp5的vendor文件夾下, ![](https://img.kancloud.cn/84/27/8427181565784f01e2d9f3ec5a718c03_179x360.png) 然后對gate框架的start_gateway.php文件進行配置 ![](https://img.kancloud.cn/ca/ed/caed025763ba3d16c963133e186ab3f9_693x652.png) 業務邏輯代碼主要放在Events.php文件里。 這是gate的目錄結構: ![](https://img.kancloud.cn/31/3f/313fc8fecd064dab20fff07576a717ac_836x412.png) 然后就是前端代碼了,我這里是用別人教程的一個模板,根據里面的代碼做一下簡單的修改,適合入門。 這里是html的代碼 ````<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="format-detection" content="telephone=no" /> <title>溝通中</title> <link rel="stylesheet" type="text/css" href="__STATIC__/newcj/css/themes.css?v=2017129"> <link rel="stylesheet" type="text/css" href="__STATIC__/newcj/css/h5app.css"> <link rel="stylesheet" type="text/css" href="__STATIC__/newcj/fonts/iconfont.css?v=2016070717"> <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script> <script src="__STATIC__/newcj/js/dist/flexible/flexible_css.debug.js"></script> <script src="__STATIC__/newcj/js/dist/flexible/flexible.debug.js"></script> </head> <body ontouchstart> <div class='fui-page-group'> <div class='fui-page chatDetail-page'> <div class="chat-header flex"> <i class="icon icon-toleft t-48"></i> <span class="shop-titlte t-30">商店</span> <span class="shop-online t-26"></span> <span class="into-shop">進店</span> </div> <div class="fui-content navbar" style="padding:1.2rem 0 1.35rem 0;"> <div class="chat-content"> <p style="display: none;text-align: center;padding-top: 0.5rem" id="more"><a>加載更多</a></p> <p class="chat-time"><span class="time">2017-11-12</span></p> </div> </div> <div class="fix-send flex footer-bar"> <i class="icon icon-emoji1 t-50"></i> <input class="send-input t-28" maxlength="200"> <i class="icon icon-add t-50" style="color: #888;"></i> <span class="send-btn">發送</span> </div> </div> </div> <script> var fromid = 12; // var toid = 13; var API_URL = "http://localhost/tchat/public/index.php/api/api/"; var ws = new WebSocket("ws://192.168.0.102:8282"); // var ws = new WebSocket("ws://192.168.10.51:8282"); ws.onmessage = function(e){ var message = eval("("+e.data+")"); switch (message.type){ case "init": var bild = '{"type":"bind","fromid":"'+fromid+'"}'; ws.send(bild); return; case "text": console.log(message); if(toid==message.fromid) { $(".chat-content").append(' <div class="chat-text section-left flex"><span class="char-img" style="background-image:"></span> <span class="text"><i class="icon icon-sanjiao4 t-32"></i>' + message.data + '</span> </div>'); } return; case "save": save_message(message); return; } // $(".chat-content").append(' <div class="chat-text section-left flex"><span class="char-img" style="background-image: "></span> <span class="text"><i class="icon icon-sanjiao4 t-32"></i>' + message.data + '</span> </div>'); // console.log(message); } $(".send-btn").click(function(){ var text = $(".send-input").val(); var message = '{"data":"'+text+'","type":"say","fromid":"'+fromid+'","toid":"'+toid+'"}'; $(".chat-content").append('<div class="chat-text section-right flex"><span class="text"><i class="icon icon-sanjiao3 t-32"></i>'+text+'</span> <span class="char-img" style="background-image: "></span> </div>'); ws.send(message); $(".send-input").val(""); }) function save_message(message){ $.post( API_URL+"insertchat" , message, function(){ },'json' ) } </script> </body> </html> ```` 下面是php邏輯代碼: ~~~ <?php /** * This file is part of workerman. * * Licensed under The MIT License * For full copyright and license information, please see the MIT-LICENSE.txt * Redistributions of files must retain the above copyright notice. * * @author walkor<walkor@workerman.net> * @copyright walkor<walkor@workerman.net> * @link http://www.workerman.net/ * @license http://www.opensource.org/licenses/mit-license.php MIT License */ /** * 用于檢測業務代碼死循環或者長時間阻塞等問題 * 如果發現業務卡死,可以將下面declare打開(去掉//注釋),并執行php start.php reload * 然后觀察一段時間workerman.log看是否有process_timeout異常 */ //declare(ticks=1); use \GatewayWorker\Lib\Gateway; /** * 主邏輯 * 主要是處理 onConnect onMessage onClose 三個方法 * onConnect 和 onClose 如果不需要可以不用實現并刪除 */ class Events { /** * 當客戶端連接時觸發 * 如果業務不需此回調可以刪除onConnect * * @param int $client_id 連接id */ public static function onConnect($client_id) { //global是設置全局變量的函數 global $num; // 向當前client_id發送數據 //Gateway::sendToClient($client_id, "Hello $client_id\r\n"); // 向所有人發送 // Gateway::sendToAll("$client_id login\r\n"); $data = json_encode(array('type'=>'init','client_id'=>$client_id)); echo "connect".++$num.":".$client_id."\n"; 發送數據到指定clientid里 Gateway::sendToClient($client_id,$data); } /** * 當客戶端發來消息時觸發 * @param int $client_id 連接id * @param mixed $message 具體消息 */ public static function onMessage($client_id, $message) { // 向所有人發送 $message_data = json_decode($message,true); if(!$message_data){ return; } switch($message_data['type']){ case "bind": $fromid = $message_data['fromid']; //綁定clientid到用戶id里,發送消息通過用戶id發送 Gateway::bindUid($client_id, $fromid); echo "datasend".$fromid."\n"; return; case "say": //解析字符串成html字符串 $text = nl2br(htmlspecialchars($message_data['data'])); $fromid = $message_data['fromid']; $toid = $message_data['toid']; $date=[ 'type'=>'text', 'data'=>$text, 'fromid'=>$fromid, 'toid'=>$toid, 'time'=>time() ]; echo "datasend".$fromid."\n"; echo "datasend".$toid."\n"; //傳輸數據到指定用戶id Gateway::sendToUid($toid,json_encode($date)); return; } } /** * 當用戶斷開連接時觸發 * @param int $client_id 連接id */ public static function onClose($client_id) { // 向所有人發送 echo "logout:".$client_id."\n"; } } ~~~ 功能到這里已經基本實現了,后面還會對消息進行數據庫記錄
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看