| | # MiniAndroidApp13-WebSocket02 |
---|
| | # WebSocketClientSample |
---|
| | |
---|
| | ## 各ファイルのポイント |
---|
| | |
---|
| | ### Build.gradle |
---|
| | okhttp3を使うために下の1行を追加、build gradleしておく。 |
---|
| | |
---|
| | ``` |
---|
| | dependencies { |
---|
| | //(省略) |
---|
| | |
---|
| | implementation 'com.squareup.okhttp3:okhttp:4.9.1' |
---|
| | } |
---|
| | ``` |
---|
| | |
---|
| | ### AndroidManifest.xml |
---|
| | 通信を許可する下の2行を追記。 |
---|
| | WebSocket関係なく、通信の際には必要なコード。 |
---|
| | ``` |
---|
| | <uses-permission android:name="android.permission.INTERNET" /> |
---|
| | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
---|
| | ``` |
---|
| | |
---|
| | 以下の android:usesCleartextTraffic="true" を追記。 |
---|
| | これもWebSocket関係なく、通信の際には必要なコード。 |
---|
| | ``` |
---|
| | <application |
---|
| | android:allowBackup="true" |
---|
| | android:dataExtractionRules="@xml/data_extraction_rules" |
---|
| | <!--(省略)--> |
---|
| | |
---|
| | 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) |
---|
| | |
---|
| | |