在不同的项目文件夹中 stream_socket_client连接$address_data中的port 和 Gateway 声明startPort 的不一致

嗷嗷叫唤

目前的做法是 在项目1中启动后,在项目2中发送消息。
两个项目在同一个服务器,并且都 composer require workerman/workerman,

出现的问题为:项目1中声明的startPort,和项目2 中local_port不一样。

项目文件夹1

new Register('text://0.0.0.0:1238');

$Gateway = new Gateway('tcp://0.0.0.0:8082');
$Gateway->lanIp = '127.0.0.1';
$Gateway->startPort = 10000; //startPort 为10000开始

$worker = new BusinessWorker();
$worker->eventHandler = 'App\Http\Controllers\WebSocket\WebSocketController';
$worker->name = 'BusinessWorker';
$worker->count = 3;
$worker->registerAddress = '127.0.0.1:1238';

可以正常启动


项目文件夹2
发送消息
Gateway::$registerAddress = '127.0.0.1:1238';
startPort 为20000开始
报错 stream_socket_client(): unable to connect to tcp://127.0.0.1:20001 (Connection refused)


附上 php artisan workman connections
截图

923 1 0
1个回答

walkor

看下是调用哪个接口报错,可能是client_id传错了,client_id里包含了端口信息

  • 嗷嗷叫唤 2022-04-13

    感谢大佬 。
    我两个项目里,起的名字一样 “work:socket”,都执行过同样的 php artisan work:socket start ,但是没有同时启动过。
    启动之后
    Workerman[worker:socket] start in DEBUG mode ,请问这个跟同样的命令名称有关吗?

  • walkor 2022-04-13

    没用过 artisan ,这不太清楚

年代过于久远,无法发表回答
🔝