4.2.2.10 SamplePlaza Переподключение
Atom Ответить
19.02.2014


Здравствуйте!

Использую версию 4.2.2.10, пример SamplePlaza.

Включаю приложение с запущенным интернетом, роутер запущен на локальном компьютере. Подключаюсь, начинаю получать данные. Отключаю интернет, данные не приходят естественно. Но приложение не понимает, что нет соединения с Плазой. Через 25-30 секунд появляется сообщение(2 шт.)

Quote:
System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'ConnectMessage'. ---> System.InvalidOperationException: Соединение потеряно. Состояние соединения Error.
--- Конец трассировки внутреннего стека исключений


При этом состояние Trader.ConnectionState остается Connected.
Нажатие "Отключиться" переводит Trader в состояние Disconnecting и в этом положении и зависает.
Если "Отключиться" не нажимать, а подключить интернет, то данные после ошибки не обновляются.

Если же включить интернет через несколько секунд после отключения(опытным путем установлено, что время должно быть меньше примерно 13 секунд), то никаких ошибок нет и данные начинают дальше приходить.

Если включить интернет через некоторое количество секунд, большее 13, то можно добиться варианта, когда данных нет и ошибок тоже никаких нет.

В логах появляется после отключения интернета (примерно через 25 секунд) следующее:

Quote:

2014/02/19 00:51:10.446| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_3 - status: Error
2014/02/19 00:51:10.446| |PlazaStreamMessageAdapter|PlazaStream RTS_INDEX_REPL:Закрытие потока.
2014/02/19 00:51:10.446| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_0 - status: Error
2014/02/19 00:51:10.446| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_2 - status: Error
2014/02/19 00:51:10.446| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_4 - status: Error
2014/02/19 00:51:10.446| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTTRADE_REPL:Закрытие потока.
2014/02/19 00:51:10.446| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTAGGR5_REPL:Закрытие потока.
2014/02/19 00:51:10.447| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTAGGR5_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.447| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTAGGR5_REPL:Закрытие потока.
2014/02/19 00:51:10.447| |PlazaStreamMessageAdapter|PlazaStream RTS_INDEX_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.447| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTTRADE_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.447| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTTRADE_REPL:Закрытие потока.
2014/02/19 00:51:10.447| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTAGGR5_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.447| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_1 - status: Error
2014/02/19 00:51:10.447| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTTRADE_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.446|Error |PlazaTrader|System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'ConnectMessage'. ---> System.InvalidOperationException: Соединение потеряно. Состояние соединения Error.
--- Конец трассировки внутреннего стека исключений ---
2014/02/19 00:51:10.449|Error |PlazaTrader|System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'ConnectMessage'. ---> System.InvalidOperationException: Соединение потеряно. Состояние соединения Error.
--- Конец трассировки внутреннего стека исключений ---
2014/02/19 00:51:10.457| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_0 - status: Closed
2014/02/19 00:51:10.460| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTCOMMON_REPL:Остановка потока.
2014/02/19 00:51:10.460| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTCOMMON_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.460| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTCOMMON_REPL:Поток остановлен.
2014/02/19 00:51:10.460| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTCOMMON_REPL:Остановка потока.
2014/02/19 00:51:10.460| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTCOMMON_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTCOMMON_REPL:Поток остановлен.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTINFO_REPL:Остановка потока.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTINFO_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTINFO_REPL:Поток остановлен.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTINFO_REPL:Остановка потока.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTINFO_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTINFO_REPL:Поток остановлен.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_PART_REPL:Остановка потока.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_PART_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_PART_REPL:Поток остановлен.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_POS_REPL:Остановка потока.
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_POS_REPL:StreamStateChanged: State Closed
2014/02/19 00:51:10.461| |PlazaStreamMessageAdapter|PlazaStream FORTS_POS_REPL:Поток остановлен.
2014/02/19 00:51:10.462| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_1 - status: Closed
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTAGGR5_REPL:Остановка потока.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream RTS_INDEX_REPL:Остановка потока.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTTRADE_REPL:Остановка потока.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTTRADE_REPL:Поток остановлен.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTTRADE_REPL:Остановка потока.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_FUTAGGR5_REPL:Поток остановлен.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTAGGR5_REPL:Остановка потока.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream RTS_INDEX_REPL:Поток остановлен.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTTRADE_REPL:Поток остановлен.
2014/02/19 00:51:12.457| |PlazaStreamMessageAdapter|PlazaStream FORTS_OPTAGGR5_REPL:Поток остановлен.
2014/02/19 00:51:12.458| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_4 - status: Closed
2014/02/19 00:51:12.458| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_2 - status: Closed
2014/02/19 00:51:12.458| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_3 - status: Closed


Естественно, напрашиваются вопросы:

Как правильно организовать переподключение при разрыве соединения?
Какие события позволяют понять, что соединение потеряно и что после этого делать?

А то получается, что, после потери интернета на 25 секунд, а потом его появления, единственным вариантом продолжения работы является перезапуск приложения. (Может, подскажете ещё какие-то варианты).

Теги:


Спасибо:




7 Ответов
casper-ss

Фотография
Дата: 19.02.2014
Ответить


Тут вообще то такое дело...:)))на сколько я понимаю,потеря интернета - это не проблема библиотеки и соответственно вашей проги, это проблема роутера, который сам востанавливает соединение после разрыва, а состояние конект или дисконект лишь сигнализирует о том что есть подозоение о потере сооединения с роутером...:)))так как не получив данные по потокам n-ое кол-во времени прога может начать ругаться...тут все зависит от того как вы настроили эти поля:
_trader.ReConnectionSettings.ConnectionSettings.AttemptCount;
_trader.ReConnectionSettings.ConnectionSettings.ReAttemptCount;
_trader.ReConnectionSettings.ConnectionSettings.TimeOutInterval;
_trader.ReConnectionSettings.ConnectionSettings.Interval;
_trader.ReConnectionSettings.ExportSettings.AttemptCount;
_trader.ReConnectionSettings.ExportSettings.ReAttemptCount;
_trader.ReConnectionSettings.ExportSettings.Interval
_trader.ReConnectionSettings.ExportSettings.TimeOutInterval;
_trader.TradesKeepTime = TimeSpan.FromDays(1);
_trader.PollTimeOut = TimeSpan.FromMilliseconds(1);
_trader.ReConnectionSettings.WorkingTime = WorkingTimeTest();

плюс не мешало бы экспорт отдельно мониторить, так как бывает случаи, что экспорт отвалился, а конект к роутеру есть...кстати это бывает чаще...
лично я пока каких то сильных глюков по переподключению не заметил...до этого были, но их стокшарп достаточно быстро устранил...:)
так что вам надо поэксперементировать с настройками...ну я так думаю по крайнее мере...:)
Спасибо: Ольга

Ольга

Фотография
Дата: 19.02.2014
Ответить


Casper-ss, спасибо большое! Были такие подозрения, что роутер должен сам соединение восстанавливать.

С настройками что я только уже не делала, но буду дальше ковырять. А вы какие значение в настройках ставите? На что именно обратить внимание?

Я правильно понимаю, что подключение получает 'ConnectMessage' и это приводит к ошибке и потере соединения с роутером?

Quote:
System.InvalidOperationException: Подключение в состоянии Connected получило неожиданное сообщение типа 'ConnectMessage'. ---> System.InvalidOperationException: Соединение потеряно. Состояние соединения Error.
--- Конец трассировки внутреннего стека исключений


Почему, если соединение с роутером потеряно, Trader.ConnectionState остается Connected?
И кто посылает сообщение типа 'ConnectMessage'?
Автор топика
Спасибо:

casper-ss

Фотография
Дата: 19.02.2014
Ответить


Так у вас же после получения сообщения...состояние соединения стало error...или я не понял цитаты...а вообще в процессе работы проги выключите роутер,и посмотрите какие сообщения приходят в этом случае(эти точно связаны с потерей соединения между прогой и роутером) и сравните их с тем что приходят в случае отсутствия интернета...правда здесь обратите еще внимание через что вы подключаетесь к роутеру, через локальный протокол или com...
в случае потери соедиения между прогой и роутером по типу локальный протокол, то нифига он не переподключится заново, только полностью перезапускаться вместе с роутером и ничего тут не сделаешь...:)
а настройки у меня такие:
_trader.ReConnectionSettings.ConnectionSettings.AttemptCount = 1;
_trader.ReConnectionSettings.ConnectionSettings.ReAttemptCount = -1;
_trader.ReConnectionSettings.ConnectionSettings.TimeOutInterval = TimeSpan.FromSeconds(3);
_trader.ReConnectionSettings.ConnectionSettings.Interval = TimeSpan.FromSeconds(3);

_trader.ReConnectionSettings.ExportSettings.AttemptCount = 1;
_trader.ReConnectionSettings.ExportSettings.ReAttemptCount = -1;
_trader.ReConnectionSettings.ExportSettings.Interval = TimeSpan.FromSeconds(3);
_trader.ReConnectionSettings.ExportSettings.TimeOutInterval = TimeSpan.FromSeconds(3);

_trader.TradesKeepTime = TimeSpan.FromDays(1);
_trader.PollTimeOut = TimeSpan.FromMilliseconds(1);

но эти настройки зависят от вида вашего подключения...где вы сидите, как сидите, через что...ну и для алгоритма что нужно...
Спасибо: Ольга

Mikhail Sukhov

Фотография
Дата: 19.02.2014
Ответить


Ольга Go to

Почему, если соединение с роутером потеряно


Соединение с роутером редко когда теряется, если он расположен на той же машине, где и робот. У вас идет потеря соединения роутера с биржей.
Спасибо: Ольга

Ольга

Фотография
Дата: 20.02.2014
Ответить


Casper-ss и Михаил, спасибо большое!

Но всё ещё осталось недопонимание.

Если роутер потерял соединение с биржей, то что означает в логах 'status : Error', а потом 'status : Closed'
Quote:
2014/02/19 00:51:10.446| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_3 - status: Error
2014/02/19 00:51:12.458| |PlazaConnectionPool|OnConnectionStatusChanged: conn SS_3 - status: Closed


Статус какого соединения стал Error и Closed (программы с роутером или роутера с биржей)? Искала на форуме, в документации, информации об этом не нашла. Насколько я понимаю, 'conn SS_i' - это соединение программы с роутером(типа IP2Connection). В документации к Plaza2 статусы совсем другие(Router_Reconnecting, Invalid, Disconnected и др.) и если это именно эти статусы, то непонятно, как они соотносятся с Error и Closed.

Если Closed означает потерю соединения роутера с биржей, то почему роутер его не восстанавливает? И почему тогда я не могу отключиться по кнопке 'Отключиться' после ошибки? И как без перезапуска приложения снова восстановить связь с биржей? Ведь если я перезапущу приложение без перезапуска роутера, то всё будет работать.
Автор топика
Спасибо:

Ольга

Фотография
Дата: 06.03.2014
Ответить


Пожалуйста, поясните кто-нибудь, что же означают эти статусы Error и Closed?
Автор топика
Спасибо:

Garry

Фотография
Дата: 08.08.2014
Ответить


Так что, кто-нибудь добился банального переподключения после разрыва связи с интернетом? Помнится мне последний раз оно работало года так 1.5-2 назад, на какой то лохматой версии, еще до того как выложили исходники. Сейчас, как ни бьюсь заставить переподключиться после разрыва интернета на 5 минут ни PlazaSample(4.2.10) ни свою прогу не удается. По логам роутера вижу, что сам он переподключается без проблем, но вот библиотека ни в какую. Единственный выход это заново создавать PlazaTrader.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy