4

私の Web アプリケーションでは、Node.js と Socket.io を使用しています。

アプリケーションをローカルまたはwifiネットワークでテストすると、すべて問題ありませんでしたが、モバイルデータに切り替えたため、接続エラーが発生しました:

'ws://url/socket.io/1/websocket/' への WebSocket 接続に失敗しました: WebSocket ハンドシェイク中のエラー: 予期しない応答コード: 502

携帯電話会社がポート 8080 と 80 をブロックしているようですが、nodejitsu では別のポートに切り替えることはできないようです。

モバイルネットワーク、node.js、およびsocket.ioを処理する方法を経験した人はいますか?

編集:
ホストとして、Heroku の無料サブスクリプションと Nodejitsu の無料サブスクリプションを試しました。

モバイルでは、 http: //websocketstest.com/ でモバイルと Wi-Fiのポートを確認しました。モバイルでは、ポート 80 と 8080 でテストが失敗しました
。ポートを 443 に変更できるのではないかと思ったのですが、server.listen()ポート 443 に設定しても、nodejitsu はポート 80 をリッスンしているようです。

おそらく別のポートを介してWebSocketsが可能だと思いますが、ポートを変更する方法や、たとえばノードジツがポート80をリッスンしているだけの理由がわかりません.

4

3 に答える 3

3

HTTP 502 は「Bad Gateway」を意味し、通常はクライアントとサーバー間のパスのどこかにリバース プロキシがあることを示します。

自分の設定が原因ではないことが確実な場合は、次の Websocket (および flashsocket) トランスポートを無効にしてみてくださいsocket.io

var io = require('socket.io').listen(...);

io.set('transports', [ 'xhr-polling', 'jsonp-polling', 'htmlfile' ]);
于 2013-11-26T18:16:11.583 に答える
1

データ トランスポート構成を設定する必要があります。

var io= require('socket.io');
io.set("transports", ["xhr-polling"]);
于 2013-11-26T18:15:56.943 に答える