GatewayWorker 里面$registerAddress没生效

xuan

问题描述

客户端和服务端都在同一台服务器,访问GatewayGateway::isUidOnline()发现其他端口里的数据访问不了,
Gateway::$registerAddress = '127.0.0.1:1236';这个已经配置,但还是获取不到正确的uid

程序代码或配置

public static function onClose($client_id)
    {
        var_dump("激光已关闭");
        $uid = $_SESSION['uid'];
        var_dump($uid);

        $ip = substr($uid, strlen('laser'));
        // 通知分机设备上的激光已删除
        $laser_device = Device::where('ip', $ip)->where('type', 3)->first();
        $device = Device::find($laser_device->extension_id);
        Redis::delete('laser' . $ip);
        Gateway::$registerAddress = '127.0.0.1:1236';
        var_dump(Gateway::getAllUidList());
        if (Gateway::isUidOnline($device->ip)) {
            var_dump('分机ip:' . $device->ip);
            Gateway::sendToUid($device->ip, json_encode(['type' => config('constants.EQUIPMENT_JGCLOSE'), 'msg' => '该激光设备已下线', 'data' => $ip]));
        }

    }

重现问题的步骤

在激光断开的时候通过socket通知其他设备 其他设备uid也进行了绑定 但是
Gateway::$registerAddress = '127.0.0.1:1236';
没有生效 打印输出了一下还是获取当前1238端口下的uid
不知道是什么原因 大神给看一下 这个方法我在很多地方使用 有的时候可以用 有的时候就用不了
还有一个问题 GatewayWorker\Lib\Gateway和GatewayClient\Gateway有什么区别吗?
我看两个里面的方法基本一摸一样 我该如何选择?

操作系统环境及workerman/webman等具体版本

linux Workerman version:4.1.9

683 1 0
1个回答

xuan

$addressesCacheDisable 这个我已经禁用了
有大神帮我看看吗?

  • walkor 2023-04-24

    跨gateayWorker通讯用GatewayClient\Gateway

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