我想知道如果使用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。
答案 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()
类似的东西将在客户端提供当前协议。