SendBufferToWorker fail. 报错

<?php
namespace app\index\controller;

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

class Sgateway{
public function __construct(){
// gateway 进程
$gateway = new Gateway("Websocket://0.0.0.0:7272");
// 设置名称,方便status时查看
$gateway->name = 'ChatGateway';
// 设置进程数,gateway进程数建议与cpu核数相同
$gateway->count = 4;
// 分布式部署时请设置成内网ip(非127.0.0.1)
$gateway->lanIp = '127.0.0.1';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
$gateway->startPort = 2300;
// 心跳间隔
$gateway->pingInterval = 10;
// 心跳数据
$gateway->pingData = '{"type":"ping"}';
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:1236';

/*
// 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调
$gateway->onConnect = function($connection)
{
$connection->onWebSocketConnect = function($connection , $http_header)
{
// 可以在这里判断连接来源是否合法,不合法就关掉连接
// $_SERVER['HTTP_ORIGIN']标识来自哪个站点的页面发起的websocket链接
if($_SERVER['HTTP_ORIGIN'] != 'http://chat.workerman.net')
{
$connection->close();
}
// onWebSocketConnect 里面$_GET $_SERVER是可用的
// var_dump($_GET, $_SERVER);
};
};
*/

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}


}
}



<?php
namespace app\index\controller;

use Workerman\Worker;
use GatewayWorker\Register;

class Sregister{

public function __construct(){
// register 服务必须是text协议
$register = new Register('text://0.0.0.0:1236');

// 如果不是在根目录启动,则运行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 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'ChatBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
$worker->registerAddress = '127.0.0.1:1236';
//设置处理业务的类,此处制定Events的命名空间
$worker->eventHandler = 'app\index\controller\Events';

// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}
}
}



以上是三个PHP 文件代码


启动没有问题,但是在页面上连接websocket就报错
报错信息
SendBufferToWorker fail. The connections between Gateway and BusinessWorker are not ready. See http://wiki.workerman.net/Error3 for detail

我不知道自己的代码哪里写错!请大神帮忙看一下!
已邀请:

walkor

赞同来自:

截图启动界面以及 php start.php status 的结果

轩辕磊

赞同来自:

TIM图片20190611091128.png

直接运行start_for_win.bat脚本没有问题
脚本里面内容 php start_register.php start_gateway.php start_businessworker.phppause
 
HTML页面上连接websocket时报错

TIM图片20190611091904.png

 
 
项目的目录结构

TIM图片20190611091807.png

 
 
上面的代码对应的就这几个控制器

walkor

赞同来自:

Events.php的内容截图下

walkor

赞同来自:

看起来没问题,可能是包装了一层哪里影响到了

轩辕磊

赞同来自:

456789.png

 
我已经找到位置了,就是这个位置,但是我不知怎么引起的

要回复问题请先登录注册