2017-02-18 3 views
2

私は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接続をテストしました。プロキシ/接続の問題ではないことを確認しました。そしてそれはうまくいった。

+1

他のサーバーと接続できますか?安全な接続をせずに試して、どこかに接続できることを確認してください。 – Janne

+1

@Janne私は仕事が分かっている2つの異なるソケットサーバーに接続しようとしましたが、それでも同じエラーが発生しませんでした。 – JohnP

+1

この投稿をチェックするhttp://stackoverflow.com/questions/16675450/support-for-websockets-on-android – Janne

答えて

1

これを解決するには、[Trigger]でhttpdモジュールを使用します。

httpdサーバを設定すると、contents:またはfile:の代わりにhttp://localhostというURLが表示されます。これを実行すると、Chrome CSPの問題によって接続がブロックされていても、その接続は解除されます。

モジュールドキュメント:https://trigger.io/modules/httpd/current/

関連する問題