【PythonでWebSocket通信】websocketsのインストール

【PythonでWebSocket通信】websocketsのインストール プログラミング

「双方向通信をシステムに組み込みたい」
「サーバーからクライアントへプッシュ型の情報配信を行いたい」
「PythonでWebSocket通信を実現したい」

このような場合には、websocketsがオススメです。
この記事では、PythonでWebSocket通信を可能にするwebsocketsについて解説しています。

本記事の内容

  • websocketsとは?
  • websocketsのシステム要件
  • websocketsのインストール
  • websocketsの動作確認

それでは、上記に沿って解説していきます。

websocketsとは?

websocketsとは、PythonでWebSocket通信を行うためのライブラリです。
websocketsを用いて、サーバーとクライアントを構築できます。

非同期I/Oフレームワークのasyncioをベースにして、websocketsは開発されています。
また、エレガントなコルーチンベースのAPIを提供しています。

簡単に言うと、WebSocket通信を簡潔にコーディングできるということです。
asyncioがPythonの標準ライブラリであるため、パフォーマンスも良いでしょう。

以上、websocketsについて説明しました。
次は、websocketsのシステム要件を説明します。

websocketsのシステム要件

現時点(2022年4月)でのwebsocketsの最新バージョンは、10.2となります。
この最新バージョンは、2022年2月21日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10

このサポート状況を見ると、websocketsがよくメンテナンスされていることがわかります。
それは、以下のPython公式開発サイクルと同じだからです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

実際、websocketsのメンテナンス頻度は高いです。

したがって、websocketsは安心して利用できると言えます。

以上、websocketsのシステム要件を説明しました。
次は、websocketsのインストールを説明します。

websocketsのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.0.4
setuptools 62.1.0
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、websocketsのインストールです。
websocketsのインストールは、以下のコマンドとなります。

pip install websockets

websocketsのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package    Version
---------- -------
pip        22.0.4
setuptools 62.1.0
websockets 10.2
wheel      0.36.2

websocketsには、依存するパッケージが存在していません。
そのため、既存環境にも容易に導入できますね。

以上、websocketsのインストールを説明しました。
次は、websocketsの動作確認を行います。

websocketsの動作確認

サーバーとクライアントをそれぞれ用意します。

server.py

import asyncio
import websockets

async def hello(websocket):
    name = await websocket.recv()
    print(f"<<< {name}")

    greeting = f"Hello {name}!"

    await websocket.send(greeting)
    print(f">>> {greeting}")

async def main():
    async with websockets.serve(hello, "localhost", 8765):
        await asyncio.Future()  # run forever

if __name__ == "__main__":
    asyncio.run(main())

まず、server.pyを起動します。

$ python server.py

起動した状態で何も表示されません。
このまま、別のターミナルからclient.pyを起動。

$ python client.py 
What's your name?

名前を聞かれるので、適当に「test1」と入力。
入力すると、次のように表示されます。

$ python client.py 
What's your name? test1
>>> test1
<<< Hello test1!

サーバー側のスクリプトを起動したままのターミナルを確認します。

$ python server.py 
<<< test1
>>> Hello test1!

サーバーとクライアントが通信できているのが、確認できます。
再度、クライアント実行してみます。

$ python client.py 
What's your name? test2
>>> test2
<<< Hello test2!

このときのサーバー側の状況は、以下。

$ python server.py 
<<< test1
>>> Hello test1!
<<< test2
>>> Hello test2!

追記されていますね。
これでwebsocketsによる双方向通信がイメージできたのではないでしょうか?

以上、websocketsの動作確認を説明しました。

タイトルとURLをコピーしました