Как определить протокол подключения Метеор

Я задавался вопросом, как определить текущий протокол, если он использует веб-сокет или опрос.

- в клиенте. (добавлено для определенности)

Я нашел правильную информацию из консоли отладки.

Meteor.connection._stream.socket.protocol

и это, кажется, имеет одно значение среди...

['websocket',
'xdr-streaming',
'xhr-streaming',
'iframe-eventsource',
'iframe-htmlfile',
'xdr-polling',
'xhr-polling',
'iframe-xhr-polling',
'jsonp-polling'];

Есть ли более изящный способ определить текущий протокол? и когда будет самое быстрое время для обнаружения протокола?

Кстати, мне нужно использовать другой DDP-сервер, когда требуются липкие сессии, так как AWS ELB не поддерживает липкие сессии и веб-сокет одновременно.

2 ответа

Метеор использует протокол DDP. Чтобы подключиться к другому серверу Meteor и вызвать его методы, используйте DDP.connect следующим образом.

import { DDP } from 'meteor/ddp-client'
DDP.connect(url)

К сожалению, нет изящных, чтобы получить протокол. onConnection возвращает объект, который имеет некоторую информацию.

Meteor.onConnection(obj => 
  { console.log(obj.httpHeaders.x-forwarded-proto); });

Это возвращает "ws" для websocket. Этот способ получения протокола не изящен!

Meteor.status() дает реактивный источник данных. ( https://docs.meteor.com/api/connections.html)

if (Meteor.isClient) {
  Tracker.autorun(() => {
    const stat = Meteor.status();
    if (stat.status === 'connected') {
      console.log(Meteor.connection._stream.socket.protocol);
    }
  });
}

что-то подобное выдаст текущий протокол на стороне клиента.

Другие вопросы по тегам