amphp / websocket-client

Async WebSocket client for PHP based on Amp.
https://amphp.org/websocket-client
MIT License
147 stars 17 forks source link

Exception not reaching outer try catch #33

Open programmin1 opened 3 years ago

programmin1 commented 3 years ago

I put the whole Loop doing a websocket in a try... catch( Exception $e ) {

If there is a problem, like I disconnect internet, I get...

   Amp\Websocket\ClosedException  : Connection closed abnormally while awaiting message; Code 1008 (POLICY_VIOLATION); Reason: "Exceeded unanswered PING limit"

  at .../vendor/amphp/websocket/src/Rfc6455Client.php:659
    655|                             $deferred->resolve();
    656|                             break;
    657| 
    658|                         default:
  > 659|                             $deferred->fail(new ClosedException(
    660|                                 'Connection closed abnormally while awaiting message',
    661|                                 $code,
    662|                                 $reason
    663|                             ));

  Exception trace:

  1   Amp\Websocket\Rfc6455Client::Amp\Websocket\{closure}()
      [internal]:0

  2   Generator::current()
      .../vendor/amphp/amp/lib/Coroutine.php:67

How can I catch error and retry since try/catch does not work?

kelunik commented 3 years ago

How does your code look like?

programmin1 commented 3 years ago

The same way the example on your front page works:

Loop::run(function () { ...

$connection = yield connect('wss://...')....

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