2013-08-08 16 views
5

私はNodeJS-socketIOサーバーにJS、PHP & Pythonをリッスンするクライアントがあります。通信が普通のHTTP/WSチャネルを介して行われるとき、それは魅力的なように機能します。NodeJS - Webソケット転送によるSSL over SocketIO

ここで、この通信を保護しようとすると、websocketトランスポートはもう機能しません。 xhrポーリング(ロングポーリング)の転送に戻ります。 XhrポーリングはまだJSクライアントでは動作しますが、純粋にソケット転送に依存するPythonでは動作しません。

物事は私が試した:ノードで

  1. 、httpの代わりに(商用証明書付き)HTTPSを使用 - HAProxy経由
  2. プロキシノードを介してではなくsocketIOためのページを提供するための良い作品(1.15 -dev19)。 HTTPS(HAProxy)からHTTP(Node)へ。 Websocketトランスポートが動作しなくなりました。はJSのxhr-pollingにフォールバックします。 Pythonはをハンドシェイクでにします。
  3. プロキシ経由でSTUNnel(HTTPS用) - > HAProxy(Websocket Proxy) - > Node(SocketIO) - これはどちらでも動作しません。 Pythonクライアントはまだハンドシェイクで502を取得します。
  4. Stunnel(HTTPS)経由のプロキシ - > Node(SocketIO) - これはうまくいきません。確認されない場合のstunnel支持用WebSocketプロキシ
  5. ノード-HTTPプロキシは:500(:{ "コード": "ECONNRESET"} エラーが発生した)例外のWebSocket上及びバックXHRポーリングにフォールを

確かにその共通のユースケースと解決策があります。本当に助けに感謝します。

ありがとうございます!

+0

私たちは、socketIO-clientを使ってpythonクライアントからnode.jsサーバをsocket.ioに接続しようとしていますが、成功しません。接続からいくつかのコードスニペットを共有できますか? – user2503775

+0

SocketIO 1.xを使用している場合、Pythonクライアントは動作しません。 PythonクライアントでSocketIO 0.9を使用して、まだ動作していないかどうかを教えてください。 PythonクライアントのsocketIO-clientの作者は、1.xバージョンと一致するようにアップデート作業中です。 –

+0

ありがとうございます。それは本当に私の問題でした。 – user2503775

答えて

1

私のケースはまれなケースです。私はAmazon LinuxをベースとしたEC2インスタンス上にこの環境全体を構築しました。ほとんどすべてのyumパッケージは最新ではないので、ソースからすべてのyumパッケージをインストールする必要がありました。そうすることで、設定が変更されなかった/追加された可能性があります。または、HAProxyが必要とするlibが最新ではない可能性があります。

いずれにしても、私はubuntu 12.04ベースのEC2インスタンスで環境を再構築しようとしました。 HAProxyは少しの設定変更を加えて魅力的に機能しました。私は今、JS、私のSocketIOサーバー、Python & PHP over SSLを問題なく接続できます。また、443でリッスンし、それを非標準ポート(8xxx)にプロキシする、保護されたTCP Amazon ELBを作成することもできます。

誰かが同様の問題に遭遇した場合は、私が手伝ってくれて嬉しいです!

+0

あなたはHAProxy設定を共有していただけますか?また、HA Proxyの上にnginxを使用していますか?はいの場合、nginxへのトラフィックをどのように確保していますか? –

+0

@RanaDeepこのような遅れた返事をおかけして申し訳ありません。いいえ、私はHAProxyでNginxを使っていません。 config [HAProxy config](https://gist.github.com/karthikj/8193588)がまだ必要な場合は、 –

関連する問題