AsyncTcpConnection类tcp连接不上

alive01
$worker = new Worker('websocket://0.0.0.0:8998');
        $all_connections = [];
        $worker->onMessage = function($con, $data) {
            // 假设已知设备ip和端口
            $ip = '121.40.*.*'; $port = 8990;
            // 获取与设备的连接
            $device_connection = get_connection($ip, $port);

            $device_connection->onError = function($connection, $code, $msg)
            {
                echo "error $code $msg\n";
            };
            $device_connection->onConnect=function ($con){
                dump("tcp连接成功");
            };
            // 设备发来数据时
            $device_connection->onMessage = function($device_connection, $data){
                dump($data);
            };
            // 给设备发数据
            $device_connection->send('');

        };
        function get_connection($ip, $port)
        {
            static $all_connections = [];
            $addr = $ip.":".$port;
            if (isset($all_connections[$addr])) {
                return $all_connections[$addr];
            }
            $con_to_device = new AsyncTcpConnection('tcp://'.$addr);
            // 与设备的连接关闭时,1秒后重新自动连接
            $con_to_device->onClose = function($con_to_device){
                $con_to_device->reconnect(1);
            };
            $con_to_device->connect();
            $all_connections[$addr] = $con_to_device;
            return $con_to_device;
        }
        // 运行worker
        Worker::runAll();


1.网页端的websocket发送的消息指令通过AsyncTcpConnection类转发给tcp,2.tcp收到指令后返回消息通过websocket显示在网页端;

大佬帮忙看下是哪里出现问题了,连接不上tcp

1341 3 1
3个回答

walkor

在 websocket 那台服务器上运行 telnet 121.40.x.x 8990 看下是否能连上。
顺便贴下 端口是8990 那台服务器的代码

  • alive01 2021-12-23

    访问的tcp是第三方提供的,绑定了121.40.x.x的8990端口

alive01



访问的tcp是第三方提供的,绑定了121.40.x.x的8990端口,单独监听8990端口是可以接受到返回数据的

  • walkor 2021-12-23

    你这个地址可能是错的,或者对方没启动服务,你看telnet结果是连接被拒绝了。不是workerman的问题

  • alive01 2021-12-24

    这个是我重新写的一个测试worker,只监听一个tcp协议的8990端口,可以正常的发送数据和返回数据,同时也能telnet到8990端口

  • walkor 2021-12-24

    所以这个不是workerman的问题,你应该找提供服务的人

  • alive01 2021-12-24

    现在telent 8990端口提示:telnet: connect to address 121.40.77.177: Connection refused,服务商那边反馈没有开启8990的tcp监听

alive01



这个是我重新写的一个测试worker,只监听一个tcp协议的8990端口,可以正常的发送数据和返回数据,同时也能telnet到8990端口

  • 暂无评论
年代过于久远,无法发表回答
🔝