ネットワーク・通信処理

【Androidアプリ開発】okhttpでWebSocketを利用する

salmoncode
記事内に商品プロモーションを含む場合があります。

リアルタイムなチャットや通知などを実装する場合、WebSocket通信が有効です。
Androidでは、HTTPクライアントライブラリの okhttp がWebSocketを標準サポートしており、簡潔なコードでリアルタイム通信を実現できます。

この記事では、okhttpのWebSocketクライアントを使って接続・送受信・切断処理を行う手順を紹介します。

スポンサーリンク

🧩 この記事でできること

  • okhttpでWebSocket通信を開始できる
  • メッセージの送受信・切断イベントをハンドリングできる
  • シンプルなリアルタイムチャットを実装できる

🛠️ 開発環境

  • Android Studio 2024.1(Jellyfish)
  • Kotlin 1.9
  • okhttp 4.12.0
  • テスト端末:Pixel 7(Android 14)

1. 依存関係の追加

まずは、build.gradle にokhttpの依存関係を追加します。

2. WebSocket接続の基本コード

以下の例では、wss://echo.websocket.events という公開テストサーバーに接続します。

📌 ポイント

  • OkHttpClient.newWebSocket() は非同期で動作します。
  • WebSocketListener の各コールバックでログ出力・UI更新を行うと便利です。

3. アクティビティ側での利用例

4. 再接続処理を入れたい場合

ネットワーク断やサーバー側切断に備えるには、再接続ロジックを追加します。

onFailure() でこの関数を呼び出すことで、一定間隔で再接続可能になります。

5. 認証付きWebSocketの例

トークン認証を行う場合、リクエストヘッダに追加します。

6. よくあるエラーと対策

症状原因対処法
onFailure がすぐ呼ばれるURLミス or TLS証明書エラーwss:// → ws:// or 証明書検証を確認
メッセージが届かないサーバー側実装不備echoサーバーなどでテスト
長時間で切断されるPing送信が無い定期的に webSocket?.send("ping")

7. 応用:リアルタイムチャットUIに発展

この基礎コードをもとに、RecyclerViewなどでチャットUIを作成できます。

👉 参考記事:
【Androidアプリ開発】RecyclerViewでチャットUIを作る(予定)

まとめ

  • okhttpのWebSocket APIで手軽にリアルタイム通信が可能
  • 接続・送受信・切断イベントをコールバックで制御
  • 認証や再接続処理を組み込むと安定動作

🔗 関連記事

この記事で使用した開発環境

APIテスト環境を簡単に作るなら
  • ConoHa VPS:月500円〜でテスト用サーバーを構築可能
  • Postman:通信確認に便利な定番ツール

さらに学びたい方へ

スポンサーリンク
書いた人
サーモン
サーモン
著者(ソフトウェアエンジニア)
こんにちは、ソフトウェアエンジニアのサーモンです。 情報系大学院を卒業後、都内IT企業に従事しています。プログラミング歴は10年以上になります。
記事URLをコピーしました