2016-07-28 8 views
0

WebSocketまたはポーリングを使用している場合、現在のプロトコルを識別する方法が不思議でした。Meteor接続のプロトコルを特定する方法

- クライアント内。 (確実に付加されています)

私はデバッグコンソールから有効な情報を見つけました。

Meteor.connection._stream.socket.protocol

、うちの1つの値を持っているようだ...

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

は、現在のプロトコルを識別するために、より多くの恵みの方法は何ですか? いつプロトコルを検出するのが最も速いタイミングですか?

ところで、AWS ELBがスティッキセッションとWebSocketを同時にサポートしていないため、スティッキセッションが必要な場合は別のDDPサーバーを使用する必要があります。

答えて

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'を返します。プロトコルを取得するこの方法は優雅ではありません!

+0

多分私の質問は間違っていました。私はSockJS接続のプロトコルを知りたがっていました。 [ 'のWebSocket'、 'XDR-ストリーミング'、 'XHRストリーミング'、 'はiframeのEventSource'、 'はiframe HTMLFILE'、 'XDR-ポーリング'、 'XHRポーリング' の中で、 " iframe-xhr-polling '、 ' jsonp-polling ']; – Kennyhyun

+0

私はオリジナルの答えをより多くの情報で更新しました。 – vijayst

0

Meteor.status()は、反応性のあるデータソースを示します。 (https://docs.meteor.com/api/connections.html#DDP-connect

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

そのようなことは、クライアント側の現在のプロトコルを提供します。

関連する問題