为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Amphp 捕获 php websocket 断开的 TCP 连接异常?

如何使用 Amphp 捕获 php websocket 断开的 TCP 连接异常?

PHP
qq_花开花谢_0 2022-05-27 14:53:16
这是连接仍然存在时我正在运行的当前 WebSocket 循环。但是连续连接11个小时后,我收到了异常"exception":"[object] (Amp\\Websocket\\ClosedException(code: 1006): The connection was closed: Client closed the underlying TCP connection at ...如何检查关闭的连接或异常本身?,这样我就可以正确结束脚本逻辑而不会突然失败。     \Amp\Loop::run(function () use ($fn, $st)        {            $connection = yield \Amp\Websocket\connect('wss://URL');            yield $connection->send('{"action":"auth","params":"KEYID"}');            yield $connection->send('{"action":"subscribe","params":"'.$st.'"}');            $i = 0;            while ($message = yield $connection->receive())             {                $i++;                $payload = yield $message->buffer();                $r = $fn($payload, $i);                if ($r == false) {                    $connection->close();                    break;                }            }        }    );我正在使用这个 Amphp Websocket:https ://github.com/amphp/websocket-client
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

ClosedException我确实找到了解决这个问题的方法,方法是在它被抛出后寻找并运行其他任务。


\Amp\Loop::run(function () use ($fn, $st)

    {

        try 

        {

            $connection = yield \Amp\Websocket\connect('wss://URL');


            yield $connection->send('{"action":"auth","params":"KEYID"}');

            yield $connection->send('{"action":"subscribe","params":"'.$st.'"}');


            $i = 0;


            while ($message = yield $connection->receive()) 

            {

                $i++;

                $payload = yield $message->buffer();


                $r = $fn($payload, $i);


                if ($r == false) {

                    $connection->close();

                    break;

                }

            }

        }

        catch (\Amp\Websocket\ClosedException $e) 

        {

            // do something here

        }

    }

);


查看完整回答
反对 回复 2022-05-27
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号