2013-01-12 10 views
7

Androidのマルチプレイヤーゲームのプレイヤー間のコミュニケーションについては、私はAndroidのアプリケーションでWebSocketのサポートを有効にするためにクライアント側にWebSocketサーバーとTooTallNate's Java libraryを使用しています。だから、明らかにそれを指摘するために、モバイルブラウザでのWebSocketのサポートは私にとって重要ではありません。モバイルデバイスでのWebSocketのサポート

残念ながら、接続の失敗や未受信のメッセージなどの問題が発生していると報告しています。それはモバイルデバイス(ブロックされたポート、ファイアウォール、モバイルインターネット接続)上のWebSocketの一般的な問題ですか、それともおそらくクライアント側のコードの欠陥ですか?

上記のようなWebSocketクライアントライブラリの経験がありますか?私はちょうどautobahn.ws for Androidを発見しました - しかし、私はそれが私の現在のライブラリ(上記参照)から切り替える価値があるかどうかわかりません。

WAMPについてはどうですか?私はサブプロトコル(?)WAMPを使用する必要があるように、WebSocket技術は正確に適切なソリューションではありませんか?

答えて

4

すべての新しいテクノロジには、新しい一連の問題があります。 WebSocketの場合、ほとんどの企業ネットワークでHTTP接続を仲介するプロキシサーバーとの互換性があります。 WebSocketプロトコルは、HTTP接続をWebSocket接続に「アップグレード」するために、通常HTTP/SSLに使用されるHTTPアップグレードシステムを使用します。一部のプロキシサーバーはこれを気に入らず、接続を切断します。したがって、たとえ特定のクライアントがWebSocketプロトコルを使用していても、接続を確立することはできません。

+0

ありがとうございました!つまり、使用されているクライアントライブラリとモバイルデバイス(またはキャリア)に関係なく、WebSocketはプロキシのために常に疑わしいでしょうか?一方、モバイルデータプランを使用する場合、通常は間にプロキシがありませんか?最初の質問は – caw

+0

です。はい 2番目の質問です。それは、通常、私たちは持っているかどうかによって異なります。 – atta

+0

また、クライアントとサーバーのWebソケット接続とメッセージングのコードを共有してください。 – atta

8

これらのエラーは、特定のモバイルネットワーク上でWebソケット接続が不良であった場合に発生します。することによって、それらを解決しよう:

(1)ポートを移動:SSLポートに上のWebSocketのために、サーバとクライアントの上に移動する(ポート443)

(2)のpingキープアライブ:クライアントからの定期的な「ピング」メッセージの送信X秒ごとにサーバーに接続し、「ポン」がサーバーから戻るのを待っています。サーバがY秒間に "pong"を戻さない場合は、クライアント上で接続を再開してください。

(1)を実装すると、ほとんどの方法が得られます。

+0

私は、AndroidとiOS用のwebsocketクライアントの現在の状態(2016年現在)が、カバレッジが悪い状態でのアイドル接続の切断や、場合によってはWi-Fiを処理しないため、pingがかなり重要であることがわかりました。 – Nick

関連する問題