ホームページ  >  記事  >  バックエンド開発  >  Androidアプリケーションがsocket.io Golangサーバーに接続できません

Androidアプリケーションがsocket.io Golangサーバーに接続できません

PHPz
PHPz転載
2024-02-08 21:48:221099ブラウズ

Android应用程序无法连接到socket.io Golang服务器

最近、一部の 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 サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。