У меня развернут сервер, использующий веб-сокеты для связи с клиентами в режиме реального времени.Я обнаружил, что если клиент использует Safari на устройстве iOS и приложение переходит в фоновое состояние или если он переходит в спящий режим на экране, то оно разрывает соединение с веб-сокетом (прекращение любых сообщений после возврата в Safari), но нана стороне сервера он не вызывает событие OnDisconnected.
Я обнаружил это только потому, что отслеживал, сколько у меня подключенных пользователей, и он постоянно повышается.
Chrome, Firefox и Edge все работаюткак и ожидалось на настольном ПК, и они вызывают событие OnDisconnected.
Идентификатор соединения "0HLK44LQK6LG8", Идентификатор запроса "0HLK44LQK6LG8: 0000002F": приложением возникло необработанное исключение. Этопроисходит каждый раз, когда мобильный браузер переходит в состояние сна.Я не знаю, как отследить, откуда это происходит, и сервер, похоже, не падает, просто регистрируя эту ошибку.Добавив еще несколько журналов, я обнаружил, что веб-сокет переходит в состояние «Прервано», и в документах просто говорится, что это для будущего использования.
Мне было интересно, видел ли кто-нибудь это раньше, пропускаю ли янастройка, или если есть обходной путь?До сих пор в моем методе, который отправляет данные клиентам, я проверяю все кэшированные сокеты, чтобы убедиться, что они не находятся в состоянии «Открыть», и вручную принудительно закрываю их.
Я не могу проверить это на своемсервер разработки, так как я не могу заставить мобильные устройства правильно подключаться к серверу kestrel.Я использую стандартное промежуточное программное обеспечение для веб-сокетов без особых отклонений.