Как определить протокол подключения Метеор
Я задавался вопросом, как определить текущий протокол, если он использует веб-сокет или опрос.
- в клиенте. (добавлено для определенности)
Я нашел правильную информацию из консоли отладки.
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);
}
});
}
что-то подобное выдаст текущий протокол на стороне клиента.