Создание веб-сервера с использованием API chrome.socket

Я создал веб-сервер с помощью пакетных приложений Chrome. Проблема, которую я постоянно вижу, заключается в том, что chrome.socket.accept() и chrome.socket.write() не вызывают свои функции обратного вызова. Обычно он работает более-менее надежно, если частота запросов меньше 1 запроса в секунду. Если я пойду выше этого, я начну видеть ошибки или отсутствующие обратные вызовы.

Я провел аналогичные тесты с образцом приложения «веб-сервер», созданным Google (https://github.com/GoogleChrome/chrome-app-samples/tree/master/webserver). У него такая же проблема. Обычно требуется менее 100 запросов, прежде чем веб-сервер перестанет отвечать. Самый простой способ воспроизвести проблему — использовать браузер Chrome в качестве клиента и удерживать клавишу F5 в течение нескольких секунд.

Было бы желательно иметь пример приложения, демонстрирующего, как создать надежный веб-сервер с помощью chrome.socket. До сих пор я пробовал несколько разных обходных путей для мониторинга ситуации из самого приложения и перезапуска сокета, когда сокет перестает работать, но это непросто, потому что нет надежного способа проверить статус соединения или статус последней операции, когда обратный вызов не уволенный. Я пытался использовать метод getInfo(), но он всегда возвращает «connected=true» вне зависимости от ситуации.

Я видел это на Windows 7 и Chrome OS (Chromebook).


person Oleg K    schedule 06.08.2013    source источник
comment
Чтобы уточнить: видите ли вы такую ​​же частоту/скорость отказов на своем собственном сервере, как и в образце кода сервера на Github? Если это то же самое, вероятно, это ошибка в том, как Chrome обрабатывает серверные сокеты. Если они разные, это все равно похоже на ошибку, но в худшем случае может быть что-то усугубляющее проблему.   -  person apsillers    schedule 07.08.2013
comment
Я вижу одинаковую частоту/скорость отказа в моем приложении и примере приложения. Это похоже на ошибку в том, как Chrome обрабатывает серверные сокеты. Спасибо.   -  person Oleg K    schedule 07.08.2013
comment
Да, я определенно рекомендую сообщить об ошибке на crbug.com (тем более, что пример приложения Google уже предоставляет тестовый код) . В лучшем случае ваша ошибка действительна, и они исправят базовый код сокета. В худшем случае в API нет ошибки, но Google исправляет пример кода сервера, чтобы он работал правильно.   -  person apsillers    schedule 07.08.2013
comment
Ваша проблема (или, по крайней мере, очень тесно связанная проблема) отмечена как ошибка в Chromium; вы можете пометить его, чтобы выразить интерес к ошибке и получать обновления.   -  person apsillers    schedule 07.08.2013
comment
Спасибо за совет @apsillers. Я отметил этот вопрос звездочкой и добавил свой комментарий. Надеюсь, что этот баг привлечет внимание.   -  person Oleg K    schedule 08.08.2013


Ответы (2)


Просто обновление по этому поводу. Согласно этому, проблема устранена.

person Oleg K    schedule 28.10.2013

Есть и другие проблемы с примером приложения веб-сервера. Я заметил, что могу блокировать пример приложения, удерживая Ctrl-R в браузере. Я написал более надежный вариант, который вы можете использовать здесь: https://github.com/kzahel/web-server-chrome

person kzahel    schedule 24.04.2014