提示符:
源码:
$registerIp = '127.0.0.1';
$registerPort = '6006';
$secretKey = '6006RegisterPass';
//注册Serve,只能一个
$r = new Register("text://0.0.0.0:$registerPort");
$r->name = '6006Register';
$r->secretKey = $secretKey;//秘钥
//调度计算Serve:可以分布式,添加多个服务器运行BusinessWorker分摊计算量
$b = new BusinessWorker();
$b->registerAddress = "$registerIp:$registerPort";
$b->secretKey = $secretKey;//秘钥
$b->eventHandler = 'app\BusinessWebSocket';
$b->name = '6006BusinessWorker';
$b->count = 4;
//网络IoServe:可以分布式,添加多台服务器
$g = new Gateway("websocket://0.0.0.0:6007");//页面端访问
$g->registerAddress = "$registerIp:$registerPort";
$g->name = '6006Gateway';
$g->secretKey = $secretKey;//秘钥
$g->startPort = 2900;//内部通讯起始端口,每个 gateway 实例应该都不同,步长1000
$g->count = 4;
$g->pingInterval = 10;// 心跳间隔
$g->pingData = '{"type":"ping"}';// 心跳数据
$g->lanIp = $registerIp;//本机ip,如果是分布式部署,需要设置成本机 IP
//phpCli,允许多ip, 使用GatewayWorker\Lib\Gateway控制GatewayWorker\Gateway
PhpCli::$registerAddress = "$registerIp:$registerPort";
PhpCli::$secretKey = $secretKey;//秘钥
因为你的register监听的是
0.0.0.0
,所以能被外网访问,改成127.0.0.1或者内网ip就好了。如果你没使用gatewayClient ,没有分布式部署,register监听127.0.0.1就好了。
如果你使用了gatewayClient,使用gatewayClient的服务器与gatewayWorker服务器在一个局域网,register监听本机内网ip。
如果你使用了分布式,gatewayWorker都在一个局域网,regsiter监听改为监听本机内网ip。
如果gatewayClient和gatewayWorker不在一个局域网,或者分布式部署不在一个局域网,那么只能用外网ip,设置好secretKey,忽略那些请求探测就好了。
感谢作者答复。register是0.0.0.0情况下,请问,secretKey是否配置对吗?也就是截图里的不明来源属于被Register拒绝了吗
拒绝了