Nano Hash - криптовалюты, майнинг, программирование

Firebase — есть ли флаг для принудительного длительного опроса, когда веб-сокеты заблокированы корпоративным прокси/брандмауэром?

Я разрабатываю простое корпоративное приложение AngularJS и планировал использовать Firebase для серверной части.

Браузеры, которые я должен поддерживать, — это IE8 и Chrome (последняя версия).

Мне удалось исправить все причуды, связанные с IE, во внешнем интерфейсе, и я могу успешно получать данные из моей Firebase. Поскольку IE8 не поддерживает WebSockets, я предполагаю, что он использует длинный опрос. (это хорошо с точки зрения производительности, приложение очень простое и просто извлекает/обновляет два или три фрагмента данных).

Как это ни парадоксально, я неоднократно вижу следующую ошибку в Chrome, и ему не удается подключиться к Firebase. Я предполагаю, что это связано с брандмауэром/прокси корпоративной сети.

WebSocket connection to 'wss://xxx.firebaseio.com/.es?v=5' failed: WebSocket is closed before the connection is established.

У меня нет контроля над брандмауэром/прокси, поэтому мой вопрос заключается в том, могу ли я заставить Chrome также использовать длительный опрос, используя какой-то флаг конфигурации при создании ссылки на Firebase?

Я использую смесь Angularfire и прямого Firebase. Приложение отлично работает в IE, поэтому с моим кодом все в порядке. (Также простые тестовые скрипты сталкиваются с той же проблемой)

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


  • Firebase должен автоматически возвращаться к длительному опросу, если WebSockets не работает, и поэтому ошибка консоли должна быть безвредной. Приложение еще работает? 27.12.2013
  • Анант: В Chrome нет возврата к длительному опросу. (так что я не в этой ситуации stackoverflow.com/questions/12421993/) 27.12.2013

Ответы:


1

вы можете использовать Firebase.INTERNAL.forceLongPolling(); для принудительного длинного опроса Firebase.INTERNAL.forceWebSockets(); для принудительного веб-сокета

05.02.2015
  • ПРИМЕЧАНИЕ. Я думаю, что в текущей версии SDK это будет firebase.database.INTERNAL.forceLongPolling(). 15.03.2019

  • 2

    Я уверен, что есть лучший способ, но я просто зашел в firebase-debug.js и изменил следующую функцию:

    fb.realtime.WebSocketConnection["isAvailable"] = function() {
      var isOldAndroid = false;
      if(typeof navigator !== "undefined" && navigator.userAgent) {
        var oldAndroidRegex = /Android ([0-9]{0,}\.[0-9]{0,})/;
        var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);
        if(oldAndroidMatch && oldAndroidMatch.length > 1) {
          if(parseFloat(oldAndroidMatch[1]) < 4.4) {
            isOldAndroid = true
          }
        }
      }
      return!isOldAndroid && fb.WebSocket !== null && !fb.realtime.WebSocketConnection.forceDisallow_
    };
    

    вместо этого читать:

    fb.realtime.WebSocketConnection["isAvailable"] = function() {
      return false
    };
    

    Это сработало, теперь Chrome автоматически проводит длинные опросы, и мое приложение может взаимодействовать с Firebase. Я внес такое же изменение в уменьшенный файл firebase.js, но, очевидно, предпочел бы более перспективный обходной путь вместо этого хака, если кто-нибудь может его предложить.

    28.12.2013
  • Это решение больше не актуально для более новых версий firebase, которые предоставляют вам эту функциональность. 27.11.2016
  • Здравствуйте, не могли бы вы рассказать мне, какие функции сейчас предоставляет firebase? Какой метод я могу использовать для проверки доступности веб-сокетов? Спасибо 12.08.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..