Skip to content

Question, on breaks. Errors #1006, 1008  #41

@Konstantin-seo

Description

@Konstantin-seo

Periodically, 5-10 times per hour, my script crashes into a fatal error. Here is the log:

  • Connection closed abnormally while awaiting message; Code 1006 (ABNORMAL_CLOSE); Reason: "TCP connection closed unexpectedly"
  • Connection closed abnormally while awaiting message; Code 1008 (POLICY_VIOLATION); Reason: "Exceeded unanswered PING limit"

How can I rewrite the code so that the script does not fall into a fatal error, but just let's say it sleeps for 30 seconds? or maybe there is another way so that this error does not occur and the script runs forever. I'll attach the code, can you help write the correct workaround for this error?

I will be very grateful!


MyCode:

<?php

//require_once ...

use Amp\ByteStream\StreamException;
use Amp\Loop;
use Amp\Websocket;
use Amp\Websocket\Client;
use Amp\Websocket\Client\Connection;
use Amp\Websocket\Client\Handshake;
use Amp\Websocket\ClosedException;
use Amp\Websocket\Message;
use Amp\Websocket\Options;
use Amp\Delayed;
use function Amp\Websocket\Client\connect;
	
	Amp\Loop::run(function () {
	
	$handshake = (new Handshake('wss://mg-s1.site.ru/api/bot/v1/ws?events=message_new'))->withHeader('x-bot-token', '0000000000000000000000000000000000000000000000000');

    $connection = yield connect($handshake);
    yield $connection->send('Hello!');

    try {
		while ($message = yield $connection->receive()) {
			$payload = yield $message->buffer();
			
			$result = json_decode($payload, true);
			
			//handler code

		} 
	} catch (ClosedException $e) {
            logFileEvent ('Connection break. sleep 30 sec');
			logFile ('Errors: ' . $e->getMessage());
			sleep(30);
		} catch (AssertionError $e) {
            logFile ('Errors: ' . $e->getMessage());
            $connection->close();
        } catch (Error $e) {
			logFile ('Errors: ' . $e->getMessage());
            $connection->close();
        } catch (StreamException $e) {
			logFile ('StreamException: ' . $e->getMessage());
            $connection->close();
        }
});

?>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions