ReadMeの追加
1 parent 80716b6 commit ae6ac762af31753935d5436b488d3db8f627fb31
前田 航汰 authored on 8 Dec 2022
Showing 1 changed file
View
116
README.md
# 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");
}
 
}
```
 
## 参考
- [AndroidWebSocket - slideshare](https://www.slideshare.net/kadoppe/androidwebsocket)
- [OkHttp(基本的なGETPOST)- Qiita](https://qiita.com/naoi/items/8d493f00b0bbbf8a666c)
- [AndroidWebSocket通信 - Zenn](https://zenn.dev/cizneeh/articles/websocket-on-android)