diff --git a/README.md b/README.md index 9135a16..1c6e04d 100644 --- a/README.md +++ b/README.md @@ -1 +1,115 @@ -# MiniAndroidApp13-WebSocket02 +# WebSocketClientSample + +## 各ファイルのポイント + +### Build.gradle +okhttp3を使うために下の1行を追加、build gradleしておく。 + +``` +dependencies { + //(省略) + + implementation 'com.squareup.okhttp3:okhttp:4.9.1' +} +``` + +### AndroidManifest.xml +通信を許可する下の2行を追記。 +WebSocket関係なく、通信の際には必要なコード。 +``` + + +``` + +以下の android:usesCleartextTraffic="true" を追記。 +これもWebSocket関係なく、通信の際には必要なコード。 +``` + + + android:usesCleartextTraffic="true" + + + tools:targetApi="31"> +``` + +### 通信部分のコード +メッセージ送ったり、受け取ったりするサンプルコード。 +``` +class WebSocketClient extends WebSocketListener { + private WebSocket webSocket; + + // コンストラクタ + public WebSocketClient() { + OkHttpClient client = new OkHttpClient(); + + // 接続先のエンドポイント + // エミュレータから実行するために、ここではlocalhostとか127.0.0.1ではないことに注意 + Request.Builder request = new Request.Builder(); + request.url("ws://10.0.2.2:8080/demo/WebSocketDemo"); + + webSocket = client.newWebSocket(request.build(), this); + } + + public void send(String message) { + System.out.println("send message/ "+message); + webSocket.send(message); + } + + @Override + public void onOpen(WebSocket webSocket, Response response) { + // WebSocketと接続できたら呼ばれる + System.out.println("WebSocket opened successfully"); + } + + @Override + public void onMessage(WebSocket webSocket, String text) { + // メッセージきたら呼ばれる + System.out.println("Received text message/ " + text); + } + + @Override + public void onMessage(WebSocket webSocket, ByteString bytes) { + // メッセージきたら呼ばれる + System.out.println("Received binary message/ " + bytes.hex()); + } + + @Override + public void onClosing(WebSocket webSocket, int code, String reason) { + // WebSocketが終了したら呼ばれる + webSocket.close(1000, null); + System.out.println("Connection closed end/ " + code + reason); + } + + @Override + public void onFailure(WebSocket webSocket, Throwable t, Response response) { + // WebSocketの接続に失敗したら呼ばれる + System.out.println("Connection failed/ " + t.getLocalizedMessage()); + } + +} +``` + +### メインのコード +``` +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + + // 省略 + + // さっき作ったやつをインスタンス化してこんな感じで送信できる。 + WebSocketClient webSocketClient = new WebSocketClient(); + webSocketClient.send("Hello from Android"); + } + +} +``` + +## 参考 +- [AndroidでWebSocket - slideshare](https://www.slideshare.net/kadoppe/androidwebsocket) +- [OkHttp(基本的なGET・POST)- Qiita](https://qiita.com/naoi/items/8d493f00b0bbbf8a666c) +- [AndroidでWebSocket通信 - Zenn](https://zenn.dev/cizneeh/articles/websocket-on-android)