ホームページ > バックエンド開発 > Python チュートリアル > Flask-SocketIO を使用してリアルタイム Web アプリケーションを実装する方法

Flask-SocketIO を使用してリアルタイム Web アプリケーションを実装する方法

王林
リリース: 2023-08-03 13:07:43
オリジナル
1100 人が閲覧しました

Flask-SocketIO を使用してリアルタイム Web アプリケーションを実装する方法

はじめに:
Web アプリケーションの開発に伴い、ユーザーはリアルタイムの対話と即時更新に対する要求がますます高まっています。従来の HTTP プロトコルではこれらのニーズを満たすことができません。WebSocket プロトコルはリアルタイム通信ソリューションを提供します。 Python では、Flask-SocketIO はリアルタイム Web アプリケーションを迅速に実装するのに役立つ強力なライブラリです。この記事では、Flask-SocketIOを使って簡単なリアルタイムチャットルームを構築する方法を紹介します。

  1. 準備
    まず、Flask-SocketIO ライブラリをインストールする必要があります。 pip コマンドを使用してインストールできます。

    pip install flask-socketio
    ログイン後にコピー
  2. Flask-SocketIO
    を構成する Flask アプリケーションで、Flask-SocketIO をインポートして SocketIO を構成します。上記のコードでは、Flask アプリケーションを作成し、SECRET_KEY を設定します。 SECRET_KEY は WebSocket 通信の暗号化に使用され、デフォルトでランダムに生成される文字列です。次に、SocketIO オブジェクトを作成し、Flask アプリケーションに関連付けました。

  3. ルートとイベント ハンドラーの作成
  4. 次に、ルートとイベント ハンドラーを作成する必要があります。 Flask アプリケーションでは、

    @socketio.on
    デコレーターを使用してイベント ハンドラーを登録します。以下は簡単な例です。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:python;toolbar:false;'>from flask import Flask, render_template from flask_socketio import SocketIO app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app)</pre><div class="contentsignin">ログイン後にコピー</div></div> 上記のコードでは、最初にルート

    /

    を定義し、対応するビュー関数は index.html## という名前の関数を返します。テンプレート。次に、@socketio.on デコレータを使用して、message イベントのハンドラを登録します。サーバーは message イベントを受信すると、handle_message 関数を呼び出し、メッセージをパラメーターとして渡します。 handle_message 関数は、受信したメッセージを出力し、socketio.emit メソッドを通じて、接続されているすべてのクライアントにメッセージをブロードキャストします。

    HTML テンプレートの作成
  5. プロジェクトのルート ディレクトリに、
  6. templates

    という名前のフォルダーを作成し、その中に
    という名前のフォルダーを作成します。 html ファイル。簡単な例を次に示します。

    @app.route('/')
    def index():
     return render_template('index.html')
    
    @socketio.on('message')
    def handle_message(message):
     print('received message: ' + message)
     socketio.emit('message', message, broadcast=True)
    ログイン後にコピー
    上記のコードでは、
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート