私はsocket.io(1.4.5)を使用してwebsocket接続を確立するアプリケーションを持っています。このアプリはウェブURL経由で利用でき、Trigger.ioを使ってパッケージ化されたAndroidアプリとしても利用できます。ハイブリッドアプリケーション内でwebsocket接続を作成する際にエラーが発生しました
Androidアプリが自分のwebsocketサーバーに接続できません。これは私が
WebSocket connection to 'wss://myserver.com/socket.io/?user_id=xxx&session_token=xxx&EIO=3&transport=websocket' failed: Unspecified reason
それはdoOpen()
メソッド内でsocket.ioクライアントで参照する行を受信エラーです。
this.ws = BrowserWebSocket ? new WebSocket(uri) : new WebSocket(uri, protocols, opts);
私が知っている限り、私はwebsocketサーバーに何も変更を加えていません。そして、Webサイト自体は正常に動作しており、websocketサーバーに接続することができます。
Chrome Devtoolsを使用してTrigger.io Androidアプリを検査しました。手動でウェブサーバーに接続しようとすると、同じエラーが発生します。次のコード行は機能しません。
new WebSocket("wss://myserver.com/socket.io/?user_id=xxx&session_token=xxx&EIO=3&transport=websocket")
Chromeブラウザで同じコード行を実行するだけで問題ありません。
また、エラー応答が速すぎるようです。ハイブリッドアプリ内のwebviewは接続しようとしていないようです。 websocketサーバーが稼働しているかどうかにかかわらず、応答は同じです。ナンセンスURLを入力すると、同じエラーが発生します。
new WebSocket("wss://blahblah"); //gives the same error and response immediately
トリガーアプリ内のChromeバージョンは55.0.2883.91です。
EDIT:アプリを実行しているデバイスのモバイルブラウザでwebsocket接続をテストしました。プロキシ/接続の問題ではないことを確認しました。そしてそれはうまくいった。
他のサーバーと接続できますか?安全な接続をせずに試して、どこかに接続できることを確認してください。 – Janne
@Janne私は仕事が分かっている2つの異なるソケットサーバーに接続しようとしましたが、それでも同じエラーが発生しませんでした。 – JohnP
この投稿をチェックするhttp://stackoverflow.com/questions/16675450/support-for-websockets-on-android – Janne