特定のアクセス ネットワークで SockJS を使用しているときに問題が発生しました。これは、SockJS がネットワークの状態に応じて最適なトランスポート プロトコル (websocket、ロング ポーリングなど) を選択する方法に関連していると考えられます。
Web ブラウザーを使用して、私の SockJS クライアントは Websocket トランスポート プロトコルを使用してノード SockJS サーバーに接続されます。ノードで「接続中」イベントも表示されます。ただし、データを送信すると、何も通過しません。網羅的に言うと、他のアクセス ネットワークからは完全に機能します。
Web サイトhttp://websocketstest.com/の結果によると、このアクセス ネットワークの状態は少し特殊です。
Connected Yes✔
Data Receive Yes✔
Websocket が正常に機能することを確認するには、テスト サーバーによって毎秒更新される "Server time" 行も必要です。そうではないので、websocket 接続を切断する透過的な HTTP プロキシがあると確信しています。
ただし、SockJS はそれを検出せず、フォールバック プロトコルに切り替えません。そうするために設計されたものだと思いました。
SockJS のトランスポート ネゴシエーション機能について誤解していますか?
Socket.IO
この種のシナリオまたは透過的な HTTP プロキシを使用するこの種のアクセス ネットワークでは、より堅牢ですか?
SSL で SockJS を使用できることはわかっていますが、これはむしろフォールバックであり、実際の解決策ではないと思います。