最近、一部の Android アプリケーションが Socket.io Golang サーバーに接続できない問題が広く注目を集めています。 PHP エディターの Xinyi が皆さんの質問に答えます。 socket.io Golang サーバーを使用する場合、Android アプリケーションが接続に失敗する原因となる一般的な接続の問題がいくつかあります。まず、Android アプリケーションとサーバーが同じネットワーク環境上にあり、相互にアクセスできることを確認します。また、サーバーのアドレスとポートがコード内で正しく設定されていることを確認してください。問題が解決しない場合は、Wireshark などの他のネットワーク デバッグ ツールを使用して接続の問題を確認してみてください。これらの回答が問題の解決に役立つことを願っています。
私の kotlin
コードが golang
ソケット サーバーを見つけられないため、何かが足りないのかどうかわかりません。 netstat -ano
を実行したところ、ポート 8000 がすでに TCP に使用されているため、ソケット サーバーは正常に実行されていると思います。しかし、私のAndroidはまだそれを見つけることができません。サーバーとエミュレータは両方とも同じネットワーク上にあります。これは私のコードです:
//サーバー (golang)
リーリー//アンドロイド(kotlin)
リーリー更新:
@dev.bmax の回答の前に、cleartexttraffic の有効化に関する情報を見つけて、android:usescleartexttraffic="true" を
androidmanifest.xml
に追加していましたが、アプリケーションまだサーバーに接続できません。 socket.connected()
現在は false を返します。
また、実際にサーバーに接続するにはどうすればよいでしょうか?パスなしで http://10.0.2.2:8000
だけが必要ですか?
更新:
次のようなログが取得され続けていることに今気づきました:
リーリーlogcat に何度も表示されます
更新:
他のコードを探したところ、機能するコードを見つけました。幸か不幸か、それは簡単です。これは私が見つけたコードです:
//言語
リーリー//アンドロイド kotlin
リーリーここで疑問に思ったのですが、なぜベアボーン コードは機能するのに、googollee ライブラリが提供するコードは機能しないのでしょうか?どちらの側でもセットアップをミスしたとは思わない。
更新:
ある程度の進歩が見られました。 android
コードは機能しますが、何らかの理由で予期しない問題が発生していることがわかりました。 Android 側で行った変更の詳細は次のとおりです:
// アプリケーション build.gradle
リーリー//mainactivity.kt
リーリー// androidmanifest.xml
リーリーこれらの変更を完了すると、アプリケーションはサーバーに接続できるようになります。しかし、接続後、アプリはすぐに切断されるようです。その後、サーバーに再度接続し、再度切断し、サーバーに接続します。このサイクルは止まらないようです。切断時に late client namespacedetach
というメッセージが表示されます。
これを機能させる部品をついに見つけました。最大の問題はAndroid側にあると思います。使用するライブラリを変更するとすべての問題が解決したかのように見えましたが、ほんの少し変更するだけですぐに切断される問題が解決されました。双方の最終的なコードとその他の詳細は次のとおりです:
//言語
リーリー// Android kotlin
androidmanifest.xml
リーリーApplicationBuild.gradle
リーリー// mainactivity.kt またはこのコンテンツを配置する場所
リーリー 即時切断については、Android側で接続する際に /socket.io
を追加する必要はないようです。それを削除すると切断の問題は解決しました。また、プロジェクトに asset
フォルダーは必要ありません。いや、この socket.io
は奇妙です。
以上がAndroidアプリケーションがsocket.io Golangサーバーに接続できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。