| .idea | 2 years ago | ||
| app | 2 years ago | ||
| gradle/ wrapper | 2 years ago | ||
| .gitignore | 2 years ago | ||
| README.md | 2 years ago | ||
| build.gradle | 2 years ago | ||
| gradle.properties | 2 years ago | ||
| gradlew | 2 years ago | ||
| gradlew.bat | 2 years ago | ||
| settings.gradle | 2 years ago | ||
ローカルのWebSocketサーバと通信するサンプルアプリ。
okhttp3を使うために下の1行を追加、build gradleしておく。
dependencies {
//(省略)
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
}
通信を許可する下の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");
}
}