如何识别Meteor连接的协议

时间:2016-07-28 02:15:55

标签: meteor protocols ddp

我想知道如果使用websocket或轮询,如何识别当前协议。

- 在客户端。 (确认附加)

我从调试控制台找到了有效信息。

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不同时支持粘性会话和websocket。

2 个答案:

答案 0 :(得分:0)

Meteor使用DDP协议。要连接到其他Meteor服务器并调用其方法,请使用DDP.connect,如下所示。

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

不幸的是,获得协议并不优雅。 onConnection返回一个包含一些信息的对象。

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

这会返回websocket的'ws'。这种获得协议的方式并不优雅!

答案 1 :(得分:0)

database.ref('events/' + user_id + total_event_created).set({ stuff here }); 提供了一个反应式数据源。 (https://docs.meteor.com/api/connections.html#DDP-connect

Meteor.status()

类似的东西将在客户端提供当前协议。