jamesRUS52 / tinkoff-invest

PHP client for Tinkoff invest rest API (PHP клиент для API Тинькофф инвестиций)
MIT License
70 stars 12 forks source link

WebSocket сброс соединения #3

Closed ayurushev closed 5 years ago

ayurushev commented 5 years ago

Добрый день!

Подписываюсь на получение стакана

$client->subscribeGettingOrderBook($sber->getFigi(), 2);
$client->startGetting('action', 1000, null);

Все работает и данные по WebSocket получаю ОК, но все длится примерно секунд 10, за это время по Сберу, например, прилетает 20-28 ответов от API. После чего все резко прекращается и $this->wsClient->receive(); (function startGetting в файле TIClient.php) данные не получает и вываливается в exception.

WebSocket\ConnectionException: Empty read; connection dead? Stream state: {"crypto":{"protocol":"UNKNOWN","cipher_name":"TLS_AES_256_GCM_SHA384","cipher_bits":256,"cipher_version":"TLSv1.3"},"timed_out":false,"blocked":true,"eof":true,"stream_type":"tcp_socket\/ssl","mode":"r+","unread_bytes":0,"seekable":false} in /var/www/default/html/tib/vendor/textalk/websocket/lib/Base.php:269 Stack trace: #0 /var/www/default/html/tib/vendor/textalk/websocket/lib/Base.php(143): WebSocket\Base->read(2) #1 /var/www/default/html/tib/vendor/textalk/websocket/lib/Base.php(135): WebSocket\Base->receive_fragment() #2 /var/www/default/html/tib/vendor/james.rus52/tinkoffinvest/src/TIClient.php(617): WebSocket\Base->receive()

По tcpdump вижу, что в момент, когда все пропадает, прилетает RST пакет

15:07:03.798375 IP 178.248.239.55.https > ipXXXXX.34970: Flags [R], seq 242887342, win 0, length 0
15:07:03.798386 IP 178.248.239.55.https > ipXXXXX.34970: Flags [R], seq 242887342, win 0, length 0

PS. На NodeJS (машина физически одна и та же) такой проблемы с WebSocket не обнаружил. Написал простенький WS client: данные стакана идут без остановок.

Версия PHP 7.2.19-0ubuntu0.18.04.2 (cli) (built: Aug 12 2019 19:34:28) ( NTS )

ayurushev commented 5 years ago

Textalk/websocket-php#24

jamesRUS52 commented 5 years ago

Textalk/websocket-php#24

Спасибо, форкнул, исправил