国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

SendBufferToWorker fail. 報(bào)錯(cuò)

軒轅磊
<?php
namespace app\index\controller;

use Workerman\Worker;
use GatewayWorker\Gateway;
use Workerman\Autoloader;

class Sgateway{
    public function __construct(){
        // gateway 進(jìn)程
        $gateway = new Gateway("Websocket://0.0.0.0:7272");
        // 設(shè)置名稱,方便status時(shí)查看
        $gateway->name = 'ChatGateway';
        // 設(shè)置進(jìn)程數(shù),gateway進(jìn)程數(shù)建議與cpu核數(shù)相同
        $gateway->count = 4;
        // 分布式部署時(shí)請(qǐng)?jiān)O(shè)置成內(nèi)網(wǎng)ip(非127.0.0.1)
        $gateway->lanIp = '127.0.0.1';
        // 內(nèi)部通訊起始端口,假如$gateway->count=4,起始端口為4000
        // 則一般會(huì)使用4000 4001 4002 4003 4個(gè)端口作為內(nèi)部通訊端口
        $gateway->startPort = 2300;
        // 心跳間隔
        $gateway->pingInterval = 10;
        // 心跳數(shù)據(jù)
        $gateway->pingData = '{"type":"ping"}';
        // 服務(wù)注冊(cè)地址
        $gateway->registerAddress = '127.0.0.1:1236';

        /*
         // 當(dāng)客戶端連接上來(lái)時(shí),設(shè)置連接的onWebSocketConnect,即在websocket握手時(shí)的回調(diào)
         $gateway->onConnect = function($connection)
         {
         $connection->onWebSocketConnect = function($connection , $http_header)
         {
         // 可以在這里判斷連接來(lái)源是否合法,不合法就關(guān)掉連接
         // $_SERVER標(biāo)識(shí)來(lái)自哪個(gè)站點(diǎn)的頁(yè)面發(fā)起的websocket鏈接
         if($_SERVER != 'http://chat.workerman.net')
         {
         $connection->close();
         }
         // onWebSocketConnect 里面$_GET $_SERVER是可用的
         // var_dump($_GET, $_SERVER);
         };
         };
         */

        // 如果不是在根目錄啟動(dòng),則運(yùn)行runAll方法
        if(!defined('GLOBAL_START'))
        {
            Worker::runAll();
        }

    }
}

<?php
namespace app\index\controller;

use Workerman\Worker;
use GatewayWorker\Register;

class Sregister{

    public function __construct(){
        // register 服務(wù)必須是text協(xié)議
        $register = new Register('text://0.0.0.0:1236');

        // 如果不是在根目錄啟動(dòng),則運(yùn)行runAll方法
        if(!defined('GLOBAL_START'))
        {
            Worker::runAll();
        }
    }
}
<?php
namespace app\index\controller;

use Workerman\Worker;
use GatewayWorker\BusinessWorker;
use Workerman\Autoloader;

class Sbusinessworker{
    public function __construct(){
        // bussinessWorker 進(jìn)程
        $worker = new BusinessWorker();
        // worker名稱
        $worker->name = 'ChatBusinessWorker';
        // bussinessWorker進(jìn)程數(shù)量
        $worker->count = 4;
        // 服務(wù)注冊(cè)地址
        $worker->registerAddress = '127.0.0.1:1236';
        //設(shè)置處理業(yè)務(wù)的類,此處制定Events的命名空間
        $worker->eventHandler = 'app\index\controller\Events';

        // 如果不是在根目錄啟動(dòng),則運(yùn)行runAll方法
        if(!defined('GLOBAL_START'))
        {
            Worker::runAll();
        }
    }
}

以上是三個(gè)PHP 文件代碼

啟動(dòng)沒(méi)有問(wèn)題,但是在頁(yè)面上連接websocket就報(bào)錯(cuò)
報(bào)錯(cuò)信息
SendBufferToWorker fail. The connections between Gateway and BusinessWorker are not ready. See http://wiki.workerman.net/Error3 for detail

我不知道自己的代碼哪里寫錯(cuò)!請(qǐng)大神幫忙看一下!

3437 5 0
5個(gè)回答

walkor 打賞

截圖啟動(dòng)界面以及 php start.php status 的結(jié)果

  • 軒轅磊 2019-06-11

    您看一下,我把結(jié)構(gòu)以及代碼都發(fā)出來(lái)了!

軒轅磊

[attach]2151[/attach]
直接運(yùn)行start_for_win.bat腳本沒(méi)有問(wèn)題
腳本里面內(nèi)容 php start_register.php start_gateway.php start_businessworker.phppause
?
HTML頁(yè)面上連接websocket時(shí)報(bào)錯(cuò)

[attach]2153[/attach]
?
?
項(xiàng)目的目錄結(jié)構(gòu)

[attach]2152[/attach]
?
?
上面的代碼對(duì)應(yīng)的就這幾個(gè)控制器

  • 暫無(wú)評(píng)論
walkor 打賞

Events.php的內(nèi)容截圖下

  • 軒轅磊 2019-06-11

    <?php
    namespace app\index\controller;

    /**

    • 用于檢測(cè)業(yè)務(wù)代碼死循環(huán)或者長(zhǎng)時(shí)間阻塞等問(wèn)題
    • 如果發(fā)現(xiàn)業(yè)務(wù)卡死,可以將下面declare打開(去掉//注釋),并執(zhí)行php start.php reload
    • 然后觀察一段時(shí)間workerman.log看是否有process_timeout異常
      */
      //declare(ticks=1);

    /**

    • 聊天主邏輯
    • 主要是處理 onMessage onClose
      */
      use \GatewayWorker\Lib\Gateway;

    class Events
    {
    /**

    • 有消息時(shí)
    • @param int $client_id
    • @param mixed $message
      */
      public static function onMessage($client_id, $message)
      {
      // debug
      echo "client:{$_SERVER['REMOTE_ADDR']}:{$_SERVER['REMOTE_PORT']} gateway:{$_SERVER['GATEWAY_ADDR']}:{$_SERVER['GATEWAY_PORT']} client_id:$client_id session:".json_encode($_SESSION)." onMessage:".$message."\n";

      // 客戶端傳遞的是json數(shù)據(jù)
      $message_data = json_decode($message, true);
      if(!$message_data)
      {
          return ;
      }
      
      // 根據(jù)類型執(zhí)行不同的業(yè)務(wù)
      switch($message_data['type'])
      {
          // 客戶端回應(yīng)服務(wù)端的心跳
          case 'pong':
              return;
          // 客戶端登錄 message格式: {type:login, name:xx, room_id:1} ,添加到客戶端,廣播給所有客戶端xx進(jìn)入聊天室
          case 'login':
              // 判斷是否有房間號(hào)
              if(!isset($message_data['room_id']))
              {
                  throw new \Exception("\$message_data['room_id'] not set. client_ip:{$_SERVER['REMOTE_ADDR']} \$message:$message");
              }
      
              // 把房間號(hào)昵稱放到session中
              $room_id = $message_data['room_id'];
              $client_name = htmlspecialchars($message_data['client_name']);
              $_SESSION['room_id'] = $room_id;
              $_SESSION['client_name'] = $client_name;
      
              // 獲取房間內(nèi)所有用戶列表 
              $clients_list = Gateway::getClientSessionsByGroup($room_id);
              foreach($clients_list as $tmp_client_id=>$item)
              {
                  $clients_list[$tmp_client_id] = $item['client_name'];
              }
              $clients_list[$client_id] = $client_name;
      
              // 轉(zhuǎn)播給當(dāng)前房間的所有客戶端,xx進(jìn)入聊天室 message {type:login, client_id:xx, name:xx} 
              $new_message = array('type'=>$message_data['type'], 'client_id'=>$client_id, 'client_name'=>htmlspecialchars($client_name), 'time'=>date('Y-m-d H:i:s'));
              Gateway::sendToGroup($room_id, json_encode($new_message));
              Gateway::joinGroup($client_id, $room_id);
      
              // 給當(dāng)前用戶發(fā)送用戶列表 
              $new_message['client_list'] = $clients_list;
              Gateway::sendToCurrentClient(json_encode($new_message));
              return;
      
          // 客戶端發(fā)言 message: {type:say, to_client_id:xx, content:xx}
          case 'say':
              // 非法請(qǐng)求
              if(!isset($_SESSION['room_id']))
              {
                  throw new \Exception("\$_SESSION['room_id'] not set. client_ip:{$_SERVER['REMOTE_ADDR']}");
              }
              $room_id = $_SESSION['room_id'];
              $client_name = $_SESSION['client_name'];
      
              // 私聊
              if($message_data['to_client_id'] != 'all')
              {
                  $new_message = array(
                      'type'=>'say',
                      'from_client_id'=>$client_id, 
                      'from_client_name' =>$client_name,
                      'to_client_id'=>$message_data['to_client_id'],
                      'content'=>"<b>對(duì)你說(shuō): </b>".nl2br(htmlspecialchars($message_data['content'])),
                      'time'=>date('Y-m-d H:i:s'),
                  );
                  Gateway::sendToClient($message_data['to_client_id'], json_encode($new_message));
                  $new_message['content'] = "<b>你對(duì)".htmlspecialchars($message_data['to_client_name'])."說(shuō): </b>".nl2br(htmlspecialchars($message_data['content']));
                  return Gateway::sendToCurrentClient(json_encode($new_message));
              }
      
              $new_message = array(
                  'type'=>'say', 
                  'from_client_id'=>$client_id,
                  'from_client_name' =>$client_name,
                  'to_client_id'=>'all',
                  'content'=>nl2br(htmlspecialchars($message_data['content'])),
                  'time'=>date('Y-m-d H:i:s'),
              );
              return Gateway::sendToGroup($room_id ,json_encode($new_message));
      }

      }

      /**

    • 當(dāng)客戶端斷開連接時(shí)
    • @param integer $client_id 客戶端id
      */
      public static function onClose($client_id)
      {
      // debug
      echo "client:{$_SERVER['REMOTE_ADDR']}:{$_SERVER['REMOTE_PORT']} gateway:{$_SERVER['GATEWAY_ADDR']}:{$_SERVER['GATEWAY_PORT']} client_id:$client_id onClose:''\n";

      // 從房間的客戶端列表中刪除
      if(isset($_SESSION['room_id']))
      {
      $room_id = $_SESSION['room_id'];
      $new_message = array('type'=>'logout', 'from_client_id'=>$client_id, 'from_client_name'=>$_SESSION['client_name'], 'time'=>date('Y-m-d H:i:s'));
      Gateway::sendToGroup($room_id, json_encode($new_message));
      }
      }

    }

walkor 打賞

看起來(lái)沒(méi)問(wèn)題,可能是包裝了一層哪里影響到了

軒轅磊

[attach]2154[/attach]
?
我已經(jīng)找到位置了,就是這個(gè)位置,但是我不知怎么引起的

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??