Meteor, Modulus и безопасные веб-сокеты

Пытаюсь разобраться с веб-сокетами и xhr в контексте Meteor -> Modulus. Иногда я замечал длительное время отклика, по-видимому, из-за того, что веб-сокеты возвращались к xhr, когда он не мог подключиться ... Я пытаюсь понять, почему.

Производственное приложение размещается на Modulus. SSL включен.

Что я уже сделал/проверил

  1. Обновите все: приложение работало в версии 1.0.2.1 (последняя), но изначально было создано в течение ~ 0,65 дня. В первую очередь я обновил стандартные пакеты приложений до пакетов метеоритной платформы и перезапустил сервер. Без изменений.
  2. Modulus: проверьте... Modulus не требует каких-либо явных команд для включения безопасных веб-сокетов.
  3. Метеор: проверьте... Начиная с Meteor 0.6.3.1 веб-сокеты включено по умолчанию.
  4. Размер публикации: я уверен, что мог бы быть немного более экономным в своих публикациях, но в целом они составляют около 1,4 КБ.
  5. Политика безопасности браузера: разумно уверен, что все в порядке (см. ниже)

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

PS. Похожие вопросы без ответов здесь и здесь

  BrowserPolicy.content.disallowConnect();

  //
  //Allow Meteor DDP Connections
  //
  var rootUrl = __meteor_runtime_config__.ROOT_URL;
  console.log('ROOT_URL: ' + rootUrl);

  //Allow DDP connections for local development
  if (rootUrl == 'http://localhost:3000/') {
    BrowserPolicy.content.allowConnectOrigin(rootUrl);
    BrowserPolicy.content.allowConnectOrigin(rootUrl.replace(/http(s?)/, 'ws$1'));
  }

  //Allow DDP connections for staging server currently using Meteor's free hosting
  if (rootUrl == 'http://staging.example.com') {
    BrowserPolicy.content.allowConnectOrigin('https://*.meteor.com');
    BrowserPolicy.content.allowConnectOrigin('wss://*.meteor.com');
  }

  //Allow DDP connections for Modulus
  if (rootUrl == 'https://myappname-12345.onmodulus.net') {
    BrowserPolicy.content.allowConnectOrigin('https://example.com');
    BrowserPolicy.content.allowConnectOrigin('wss://example.com');
  }

ОБНОВЛЕНИЕ.
В целях безопасности измените ROOT_URL модуля на свой личный домен. Итак, https://myappname-12345.onmodulus.net становится https://example.com.


person Chad Kruse    schedule 06.01.2015    source источник


Ответы (1)


Независимо от того, что вы делаете, скорее всего, по крайней мере небольшая часть ваших пользователей вернется к XHR. WebSockets еще не полностью поддерживаются везде, особенно на мобильных устройствах. Использование SSL дает вам гораздо более широкую поддержку, но все же не вездесущую.

Пока веб-сокеты работают на вас, вы мало что можете сделать. XHR, по задумке, будет иметь очень большое время отклика. XHR работает, открывая длинные (~ 30 с) соединения с сервером. Если серверу нечего сказать, он закроет соединение и сделает это снова. Это позволяет серверу немедленно ответить в любое время в течение этого 30-секундного окна. Эти опросы XHR показывают длительное время отклика, но это совершенно нормально.

Отказ от ответственности: я сотрудник Modulus

person BadCanyon    schedule 12.01.2015