カテゴリ: Flutterの機能拡張 更新日: 2025/11/04

FlutterでWebSocket通信をする方法とユースケースを初心者向けにやさしく解説

284
FlutterでWebSocket通信をする方法とユースケース

先生と生徒の会話形式で理解しよう

生徒

「Flutterでリアルタイム通信ってできますか?チャットアプリを作ってみたくて…」

先生

「できますよ。FlutterではWebSocketを使ってリアルタイム通信が可能です。チャットや株価表示、オンラインゲームなんかにも使われていますね。」

生徒

「WebSocketってなんですか?どうやってFlutterに組み込むんですか?」

先生

「それではFlutterでWebSocket通信を実装する方法や使い方、活用例を順番に説明していきましょう。」

1. WebSocketとは?Flutterでできること

1. WebSocketとは?Flutterでできること
1. WebSocketとは?Flutterでできること

WebSocketとは、サーバーとクライアント(この場合はFlutterアプリ)が双方向でリアルタイム通信できる仕組みです。HTTPと違い、リクエストを毎回送らずに常時接続を維持するため、チャットや通知などリアルタイム性が求められるアプリに適しています。

Flutterでは、WebSocket通信を簡単に実装できるweb_socket_channelというパッケージがよく使われます。

2. FlutterでWebSocket通信を行うための準備

2. FlutterでWebSocket通信を行うための準備
2. FlutterでWebSocket通信を行うための準備

まずはpubspec.yamlにWebSocket用のパッケージを追加しましょう。


dependencies:
  flutter:
    sdk: flutter
  web_socket_channel: ^2.4.0

追加後はflutter pub getでパッケージをインストールします。

3. FlutterでWebSocket通信する基本コード

3. FlutterでWebSocket通信する基本コード
3. FlutterでWebSocket通信する基本コード

以下はWebSocketを使って簡単な送受信を行うFlutterコードの例です。今回はEchoサーバー(送った内容がそのまま返ってくる)を利用します。


import 'package:flutter/material.dart';
import 'package:web_socket_channel/web_socket_channel.dart';

class WebSocketDemo extends StatefulWidget {
  @override
  _WebSocketDemoState createState() => _WebSocketDemoState();
}

class _WebSocketDemoState extends State<WebSocketDemo> {
  final _channel = WebSocketChannel.connect(
    Uri.parse('wss://echo.websocket.events'),
  );
  final _controller = TextEditingController();
  String _response = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('WebSocket 通信デモ')),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              controller: _controller,
              decoration: InputDecoration(labelText: '送信するメッセージ'),
            ),
            ElevatedButton(
              onPressed: () {
                _channel.sink.add(_controller.text);
              },
              child: Text('送信'),
            ),
            StreamBuilder(
              stream: _channel.stream,
              builder: (context, snapshot) {
                if (snapshot.hasData) {
                  _response = snapshot.data.toString();
                }
                return Text('受信: $_response');
              },
            ),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    _channel.sink.close();
    _controller.dispose();
    super.dispose();
  }
}

このサンプルでは、入力欄に文字を入力して「送信」ボタンを押すと、WebSocketサーバーにデータが送られ、それが即座に返ってくる流れを体験できます。

Flutterを「実務レベル」で使えるようになりたい人や、 iPhone / Android両対応アプリ開発の流れをまとめて学びたい人には、 定番の実践書がこちらです。

Flutter実践開発をAmazonで見る

※ Amazon広告リンク

4. FlutterでのWebSocket活用ユースケース

4. FlutterでのWebSocket活用ユースケース
4. FlutterでのWebSocket活用ユースケース

WebSocketは、以下のようなFlutterアプリにおいてリアルタイム通信が求められる場面で活躍します。

  • チャットアプリ(双方向通信)
  • リアルタイム通知(プッシュ通知とは別)
  • オンライン対戦型ゲーム
  • 株価・仮想通貨などの価格情報アプリ
  • センサーやIoTのデータ監視ダッシュボード

WebSocketを使えば、ユーザーとサーバーが常に接続された状態になるため、スピード感のあるデータ更新が可能になります。

5. FlutterのWebSocketで気をつけるポイント

5. FlutterのWebSocketで気をつけるポイント
5. FlutterのWebSocketで気をつけるポイント

FlutterでWebSocket通信を行う際には、いくつかの注意点もあります。

  • 常時接続が前提なので、disposeで接続を適切に切ること
  • ネットワーク切断時のtry-catchonErrorでのハンドリングが必要
  • バックグラウンド時の動作は制限される可能性がある
  • 本番環境では認証トークンを含めたセキュリティ対策が必要

Flutterではstreamを活用してリアルタイムのデータ更新を行うため、StreamBuilderとの相性が非常に良いのも特徴です。

6. 本格的なWebSocket活用のために

6. 本格的なWebSocket活用のために
6. 本格的なWebSocket活用のために

FlutterでのWebSocket活用を本格的に行うには、以下のような高度な対応も考慮しておくと良いでしょう。

  • WebSocketの再接続処理(切断後の自動再接続)
  • 接続維持のためのPing/Pong処理
  • 通信ログやメッセージIDの管理
  • バックエンドとのトークン認証との統合

このような工夫を加えることで、Flutterアプリの通信品質をより高めることができます。

Flutterの機能拡張の一覧へ
新着記事
FlutterのMVP・MVVMアーキテクチャの違いと使い分け
FlutterのMVP・MVVMアーキテクチャの違いと使い分けを初心者向けに解説!
オニオンアーキテクチャの基本とFlutterでの適用例
オニオンアーキテクチャの基本とFlutterでの適用例を初心者向けに解説
クリーンアーキテクチャとは?Flutterでの導入メリット
クリーンアーキテクチャとは?Flutterでの導入メリットをやさしく解説
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金まとめ
【AWS】RDS for Oracleの特徴・できないこと・バージョン・料金を初心者向けに徹底解説
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク