3

私のチームと私は Meteor でサービス ベースのアーキテクチャを実装しています。

フロントエンドサービスがあります。これは、デフォルトの Meteor 接続を使用するだけです。また、多数のバックエンド サービス (チャット、検索など) があり、フロントエンド経由でそれらに接続しますDDP.connect(service_url)

フロントエンド サービスの環境変数には、DISABLE_WEBSOCKETS=1. また、この環境変数を他のサービスと同じ値に設定します。

フロントエンドは、それ自体に接続するときにロング ポーリングを適切に使用します (デフォルト)。ただし、フロントエンドが他のサービスに接続しようとすると、Websocket は無効になりません。また、DDP はロング ポーリングに戻りません。

具体的には、最初に websocket 接続を試みて失敗し、いくつかの XHR リクエストを数回試行します。すすぎ、連続して繰り返します。これを何百回も非常に迅速に実行します。その結果、すべてがハングアップします。

WebSocket connection to 'wss://user.example.com/sockjs/884/ll_pzrru/websocket' failed: WebSocket is closed before the connection is established.
XHR finished loading: POST "https://user.example.com/sockjs/121/tmt57ih1/xhr_send".w._start
XHR finished loading: POST "https://user.example.com/sockjs/924/0i0c9_4f/xhr_send".w._start
XHR finished loading: POST "https://user.example.com/sockjs/221/ea72ap33/xhr".
WebSocket connection to 'wss://user.example.com/sockjs/884/ll_pzrru/websocket' failed: WebSocket is closed before the connection is established.
XHR finished loading: POST "https://user.example.com/sockjs/121/tmt57ih1/xhr_send".w._start
XHR finished loading: POST "https://user.example.com/sockjs/924/0i0c9_4f/xhr_send".w._start
XHR finished loading: POST "https://user.example.com/sockjs/221/ea72ap33/xhr".

複数のアプリを使用しているときに、DDP をロング ポーリングにフォールバックするにはどうすればよいですか?

4

0 に答える 0