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

救命啊,同樣代碼Linux和window處理不同

hello_rickey

兄弟們我遇到以下問題:參考大神的這個http://wenda.workerman.net/?/question/508
的demo,寫的一樣,部署在window的服務器下可以,但是部署在Linux上,會導致里面的workman可以運行,外層的無法運行,我里面的workman以tcp鏈接,外層以websocket鏈接,大家能抽空幫我解答下,跪謝。研究好多天了。

<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';
// 初始化一個worker容器,監(jiān)聽1234端口
$worker = new Worker('websocket://0.0.0.0:2244');
// 這里進程數(shù)必須設置為1
$worker->count = 1;
// worker進程啟動后建立一個內部通訊端口
$worker->onWorkerStart = function($worker)
{
   // 開啟一個內部端口,方便內部系統(tǒng)推送數(shù)據(jù),Text協(xié)議格式 文本+換行符
   $inner_text_worker = new Worker('tcp://0.0.0.0:5678');
   $inner_text_worker->onMessage = function($connection, $buffer)
   {
      global $worker;
      // $data數(shù)組格式,里面有uid,表示向那個uid的頁面推送數(shù)據(jù)
      $data2 = array('uid'=>'uid1', 'percent'=>$buffer);
      $uid = $data2;
      // 通過workerman,向uid的頁面推送數(shù)據(jù)
      $ret = sendMessageByUid($uid, $buffer);
      // 返回推送結果
      $connection->send($ret ? 'ok' : 'fail');
   };
   $inner_text_worker->listen();
};
// 新增加一個屬性,用來保存uid到connection的映射
$worker->uidConnections = array();
// 當有客戶端發(fā)來消息時執(zhí)行的回調函數(shù)
$worker->onMessage = function($connection, $data)use($worker)
{
   // 判斷當前客戶端是否已經(jīng)驗證,既是否設置了uid
   if(!isset($connection->uid))
   {
      // 沒驗證的話把第一個包當做uid(這里為了方便演示,沒做真正的驗證)
      $connection->uid = $data;
      /* 保存uid到connection的映射,這樣可以方便的通過uid查找connection,
       * 實現(xiàn)針對特定uid推送數(shù)據(jù)
       */
      $worker->uidConnections = $connection;
      return;
   }
};

// 當有客戶端連接斷開時
$worker->onClose = function($connection)use($worker)
{
   global $worker;
   if(isset($connection->uid))
   {
      // 連接斷開時刪除映射
      unset($worker->uidConnections);
   }
};

// 向所有驗證的用戶推送數(shù)據(jù)
function broadcast($message)
{
   global $worker;
   foreach($worker->uidConnections as $connection)
   {
      $connection->send($message);
   }
}

// 針對uid推送數(shù)據(jù)
function sendMessageByUid($uid, $message)
{
   global $worker;
   if(isset($worker->uidConnections))
   {
      $connection = $worker->uidConnections;
      $connection->send($message);
      return true;
   }
   return false;
}

// 運行所有的worker(其實當前只定義了一個)
Worker::runAll();<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';
// 初始化一個worker容器,監(jiān)聽1234端口
$worker = new Worker('websocket://0.0.0.0:2244');
// 這里進程數(shù)必須設置為1
$worker->count = 1;
// worker進程啟動后建立一個內部通訊端口
$worker->onWorkerStart = function($worker)
{
   // 開啟一個內部端口,方便內部系統(tǒng)推送數(shù)據(jù),Text協(xié)議格式 文本+換行符
   $inner_text_worker = new Worker('tcp://0.0.0.0:5678');
   $inner_text_worker->onMessage = function($connection, $buffer)
   {
      global $worker;
      // $data數(shù)組格式,里面有uid,表示向那個uid的頁面推送數(shù)據(jù)
      $data2 = array('uid'=>'uid1', 'percent'=>$buffer);
      $uid = $data2;
      // 通過workerman,向uid的頁面推送數(shù)據(jù)
      $ret = sendMessageByUid($uid, $buffer);
      // 返回推送結果
      $connection->send($ret ? 'ok' : 'fail');
   };
   $inner_text_worker->listen();
};
// 新增加一個屬性,用來保存uid到connection的映射
$worker->uidConnections = array();
// 當有客戶端發(fā)來消息時執(zhí)行的回調函數(shù)
$worker->onMessage = function($connection, $data)use($worker)
{
   // 判斷當前客戶端是否已經(jīng)驗證,既是否設置了uid
   if(!isset($connection->uid))
   {
      // 沒驗證的話把第一個包當做uid(這里為了方便演示,沒做真正的驗證)
      $connection->uid = $data;
      /* 保存uid到connection的映射,這樣可以方便的通過uid查找connection,
       * 實現(xiàn)針對特定uid推送數(shù)據(jù)
       */
      $worker->uidConnections = $connection;
      return;
   }
};

// 當有客戶端連接斷開時
$worker->onClose = function($connection)use($worker)
{
   global $worker;
   if(isset($connection->uid))
   {
      // 連接斷開時刪除映射
      unset($worker->uidConnections);
   }
};

// 向所有驗證的用戶推送數(shù)據(jù)
function broadcast($message)
{
   global $worker;
   foreach($worker->uidConnections as $connection)
   {
      $connection->send($message);
   }
}

// 針對uid推送數(shù)據(jù)
function sendMessageByUid($uid, $message)
{
   global $worker;
   if(isset($worker->uidConnections))
   {
      $connection = $worker->uidConnections;
      $connection->send($message);
      return true;
   }
   return false;
}

// 運行所有的worker(其實當前只定義了一個)
Worker::runAll();
4061 1 0
1個回答

six

哥們,端口你沒開防火墻和安全組吧。

  • hello_rickey 2017-10-25

    兄弟,我Linux服務器的防火墻直接關了啊

  • six 2017-10-25

    外層無法連接,無法連接客戶端的報錯是?

  • hello_rickey 2017-10-25

    @1393:就是沒有報錯,tcp可以鏈接上,但是tcp發(fā)送的值無法獲得,兄弟,您方便留下QQ嗎我加下您,非常感謝。

年代過于久遠,無法發(fā)表回答
??