Сбой IOS Push с сообщением об ошибке: fwrite(): сбой отправки 474 байтов с errno=10054 Существующее соединение было принудительно закрыто удаленным хостом

Я использую приложение с открытым исходным кодом "ProcessMaker"

Все работает нормально, за исключением push-уведомлений IOS, при действиях, которые делают push, этот push-сбой только для IOS (в android работают нормально).

Ошибка:

Warning: stream_socket_client(): SSL: The operation completed successfully. in C:\Bitnami\processmaker-3.0.1.8-   0\apps\processmaker\htdocs\workflow\engine\src\ProcessMaker\BusinessModel\Light\PushMessageIOS.php on line 128

urlssl://gateway.push.apple.com:2195
err0
errstr

fpResource id #146
msg �y33I����1�� Z�^�-+�� �����{"aps":{"alert":"#85 : Travel Request, Request by: \"Jordi Ferri\"","sound":"default","data":{"processId":"14804077157da297c90a955022163281","taskId":"80166625957da297ca43bf6022283253","caseId":"39318847657e115e0176d98020370358","caseTitle":"Travel Request, Request by: \"Jordi Ferri\"","delIndex":"2","typeList":"todo","counters":{"toDo":"0","draft":"0","cancelled":"0","participated":"0","paused":"0","completed":"0","unassigned":0}}}}
len474

Notice: fwrite(): send of 474 bytes failed with errno=10054 An existing connection was forcibly closed by the remote host. in C:\Bitnami\processmaker-3.0.1.8-0\apps\processmaker\htdocs\workflow\engine\src\ProcessMaker\BusinessModel\Light\PushMessageIOS.php on line 147

result0

Код:

foreach ($this->devices as $item) {
        // Open a connection to the APNS server
        $fp = stream_socket_client($this->url, $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);
        echo "<br />url" . $this->url;
        echo "<br />err" . $err;
        echo "<br />errstr" .  $errstr;
        echo "<br />";
        if (!$fp) {
            throw (new \Exception(\G::LoadTranslation('ID_FAILED') . ': ' . "$err $errstr"));
        } else {
            //echo 'Apple service is online. ' . '<br />';
        }

        // Build the binary notification
        $msg = chr(0) . pack('n', 32) . pack('H*', $item) . pack('n', strlen($payload)) . $payload;

        // Send it to the server
        echo "<br />fp" . $fp;
        echo "<br />msg" . $msg;
        echo "<br />len" .  strlen($msg);
        echo "<br />";
        $result = fwrite($fp, $msg, strlen($msg));
        echo "<br />result" . $result;
    }

PHPINFO

PhpInfo частичный

2 ответа

Решение

Эта проблема уже была исправлена ​​для processmaker 3.1, который выходит 4 октября, если после обновления вы все еще видите эту проблему, пожалуйста, создайте заявку на http://bugs.processmaker.com/ чтобы ее можно было соответствующим образом устранить.

Может быть, потому что APNS имеет ограничение данных в 256 байтов только поэтому попробуйте с простым сообщением

Другие вопросы по тегам