启用php client,php start.php start无法启动, 报错Address already in use

/**

* 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

* @copyright walkor

* @link http://www.workerman.net/

* @license http://www.opensource.org/licenses/mit-license.php MIT License

*/

use \Workerman\Worker;

use \Workerman\WebServer;

use \GatewayWorker\Gateway;

use \GatewayWorker\BusinessWorker;

use \Workerman\Autoloader;

use \Workerman\Protocols\Websocket;

use \GatewayWorker\Lib\Gateway\Events;

use \GlobalData\Client;

// 自动加载类

require_once __DIR__ . '/../../vendor/autoload.php';

$GlobalClient = new Client('0.0.0.0:2207');

// gateway 进程,这里使用Text协议,可以用telnet测试

$gateway = new Gateway("Websocket://0.0.0.0:8282");

// gateway名称,status方便查看

$gateway->name = 'YourAppGateway';

// gateway进程数

$gateway->count = 4;

// 本机ip,分布式部署时使用内网ip

$gateway->lanIp = '127.0.0.1';

// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000

// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口

$gateway->startPort = 2900;

// 服务注册地址

$gateway->registerAddress = '127.0.0.1:1238';

// 心跳间隔

$gateway->pingInterval = 55;

// 心跳数据

// $gateway->pingData = '{"type":"ping"}';

$gateway->pingNotResponseLimit = 1;

$gateway->pingData = '';

// 采用二进制传输数据

$gateway->onConnect = function($connection)

{

$connection->websocketType = Websocket::BINARY_TYPE_ARRAYBUFFER;

};

$gateway->onBufferFull = function($connection)

{

// string(111) "a:3:{s:9:"client_id";s:20:"7f0000010b5400000004";s:7:"room_id";s:7:"ROOMONE";s:11:"client_name";s:7:"xiaohei";}"

global $GlobalClient;

$session = unserialize($connection->session);

$client_id = $session['client_id'];

echo 'client_id---'.$client_id .' is buffer full';

$GlobalClient->add($client_id .'_cache',1);

$bufferCache = $GlobalClient->__get($client_id.'_cache_data');

if(empty($bufferCache)){

$GlobalClient->add($client_id .'_cache_data',array());

}

};

$gateway->onBufferDrain = function($connection)

{

// echo "buffer drain and continue send\n".$_SESSION['isBufferFull'];

// if(isset($_SESSION['bufferCache'])){

// print_r($_SESSION['bufferCache']);

// echo 'handler buffercache----cache len--'.count($_SESSION['bufferCache']);

// foreach ($cache as $_SESSION['bufferCache']) {

// //Events::onMessage($cache['client_id'],$cache['message']);

// $connection->send($cache['data']);

// // 等同于Event.php onMessage的 Gateway::sendToClient($json_info['to_client_id'], $message);

// }

// unset($_SESSION['isBufferFull']);

// unset($_SESSION['bufferCache']);

// }

global $GlobalClient;

$session = unserialize($connection->session);

$client_id = $session['client_id'];

// echo 'client_id---'.$client_id .' is buffer full'.$GlobalClient->{$client_id.'_cache'};

$GlobalClient->__unset($client_id.'_cache');

echo 'in buffer drain can send again---\n';

$bufferCache = $GlobalClient->__get($client_id.'_cache_data');

echo 'buffer count---'.count($bufferCache);

if(count($bufferCache)==0){

$GlobalClient->__unset($client_id.'_cache_data');

return;

}

foreach ($bufferCache as $i=>$cache) {

//Events::onMessage($cache['client_id'],$cache['message']);

if(empty($GlobalClient->__get($client_id .'_cache'))){

echo 'send --- '.$i;

$connection->send($cache);

unset($bufferCache[$i]);

}

// 等同于Event.php onMessage的 Gateway::sendToClient($json_info['to_client_id'], $message);

}

$GlobalClient->__set($client_id.'_cache_data',$bufferCache);

//

};

$gateway->onError = function($connection, $code, $msg)

{

echo "error $code $msg\n";

};

/*

// 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调

$gateway->onConnect = function($connection)

{

$connection->onWebSocketConnect = function($connection , $http_header)

{

// 可以在这里判断连接来源是否合法,不合法就关掉连接

// $_SERVER['HTTP_ORIGIN']标识来自哪个站点的页面发起的websocket链接

if($_SERVER['HTTP_ORIGIN'] != 'http://kedou.workerman.net')

{

$connection->close();

}

// onWebSocketConnect 里面$_GET $_SERVER是可用的

// var_dump($_GET, $_SERVER);

};

};

*/

// 如果不是在根目录启动,则运行runAll方法

if(!defined('GLOBAL_START'))

{

Worker::runAll();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值