Playground

AndroidでWebSocket通信をする(クライアント側)

Playground
この記事は約3分で読めます。
スポンサーリンク

AndroidでWebSocket通信をする機会がありました

Androidをクライアントとして動かし、ソケット通信を行いたいというものです

ESP8266やPythonを使ったWebSocketはやったことがありますがAndroidではやったことがなかっためいろいろと調べました

調べた中で、なんとかサンプルプログラムが完成したので記載しておきます

デモ

下の方にボタンがあり、CONNECTボタンを押すとServerへ接続を行い、SENDTEXTをおすと”hello”という文字列を送信します

動作確認環境

  • Android 8.0.0
  • Android 7.1.1

プログラム

本プログラムはTooTallNate氏のJava-WebSocketにて作成をしています

GitHub - TooTallNate/Java-WebSocket: A barebones WebSocket client and server implementation written in 100% Java.
A barebones WebSocket client and server implementation written in 100% Java. - TooTallNate/Java-WebSocket

上記の他にもokhttpというライブラリがありますが、うまく動作をしなかったため、こちらのライブラリを使いました

また、今回作成したプログラムはGitHubにあげています

GitHub - Momijinn/SampleAndroidWebSocketClient: AndroidでClientとしてWebsocktをするサンプルプログラム
AndroidでClientとしてWebsocktをするサンプルプログラム. Contribute to Momijinn/SampleAndroidWebSocketClient development by creating an account on GitHub.

ライブラリのインストール

build.gradleに以下を書き込み、Sync Nowをします

これでライブラリのインストールは完了です

repositories {
    mavenCentral()
}

dependencies {
    compile "org.java-websocket:Java-WebSocket:1.3.8"
}

 

しかし、現在(2018/06/28)においてSnc Nowをすると以下のようなエラーがでてきます

Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’. It will be removed at the end of 2018. For more information see:

上記のは赤字でエラーメッセージっぽくでてきますが、ライブラリのインストールはできています

内容を簡単に訳すと”2018後半ぐらいに’compile’でのライブラリインストールはできなくなるぜ”です

早く対応してほしいです

Serverへの接続と送信するメッセージの変更

MainActivity.javaにあるServerIPとServerPORTに接続したいServerのIPとPORTに入れると接続をします

private static String ServerIP = "192.168.0.5";
private static String ServerPORT = "8000";

ws.send()の中身を書き換えれば”hello”という文字列を変えれば違う文字列を送信することができます

ws.send("hello");

Serverのメッセージを受信

myWsClientListenerクラスがWebSocket通信を行う重要なところなっています

public void onMessage(final String message){}にServerから受信したメッセーがもらえます

MainActivity.java

プログラムはGitHubにあげていますが全体プログラムを載せておきます

おまけ サーバーをたてる

過去記事にもかいていますが私はPythonでサーバーを立てて実験をしました

pythonでwebソケット通信する(サーバー)
以前にESP8266におけるWebソケット通信について記載しました。 ここ ESP8266間だけでなく、他のコンピュータとでも接続できなかなぁと考えていました。 ついでに「Pythonで実装できたら!」と思い色々と調べてみると簡...

コメント

タイトルとURLをコピーしました