#extjs #socket.io
Вопрос:
У меня есть приложение ExtJS 6.2.1, и я реализовал функциональность чата с помощью сокета.версия ввода-вывода 2.2.0. Я столкнулся со странной проблемой, когда сокет отключается случайным образом. Когда я попытался отладить это, я смог воспроизвести 1 сценарий, в котором он отключается каждый раз, когда я использую sencha app watch
или sencha app build production
. Поэтому у меня сложилось впечатление, что любая задача с интенсивным использованием процессора приведет к отключению сокета. Но при дальнейшем расследовании я обнаружил, что сокет отключается только в том случае, если я загружаю скрипт микролоадера в index.html. Итак, в настоящее время именно так загружается скрипт микролоадера и сокет в индексный файл —
<script id="microloader" data-app="appId" type="text/javascript" src="bootstrap.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
Если я прокомментирую сценарий микролоадера, то файлы Extjs не загружаются. А затем я использую следующий код в консоли браузера —
var socket = io.connect('myurl', {secure: true, port: '', reconnectionDelay: 1000, reconnectionDelayMax: 60000, timeout: 120000 });
socket.on('connect' , function(){ console.log('connect'); console.log(new Date()); }); socket.on('disconnect' , function(){ console.log('disconnect'); console.log(new Date()); })
Когда микролоадер не загружен, то не имеет значения , какую команду я использую sencha app watch
или sencha app build production
, сокет не отключается. Но если я загружаю микрогрузчик, то сокет каждый раз отключается. И чтобы проверить, работает ли функция подключения или отключения нормально, я попробовал socket.connect() или socket.отключите() в консоли, и она напечатает правильный текст в соответствующей функции.
Является ли это распространенной проблемой? Или есть кто-нибудь еще, кто сталкивается с подобной проблемой? Я понятия не имею, связано ли это с ExtJS — 6.2.1 или сокетом-2.2.0. Я также проверил свое подключение к Интернету. Он стабилен и не имеет ничего общего со случайным отключением сокета.
И приведенный выше пример производства secnha app watch/ build-единственный случай, когда я могу воспроизвести проблему. Возможно, любая другая задача с интенсивным использованием процессора также отключит сокет.
Даже если я не использую команды, то также сокет отключается случайным образом, и пользователи не получают сообщений в течение этого времени..
Если есть какое-либо решение этой проблемы, то любая помощь будет признательна. Спасибо
Комментарии:
1. Отключается ли он чисто случайным образом или всегда в определенное время? Я спрашиваю, потому что работаю над приложением ExtJS 6.6, и для запроса Ajax установлен 10-минутный тайм-аут, но он всегда прерывается на 5 минут. Я пытался выяснить, я ли это, конечная точка или ExtJS…