WebSocket 経由 でメッセージを送受信する Python

WebSocket 通信により、サーバーとクライアント間でリアルタイム メッセージを送受信できます。 Python ここでは、ライブラリを使用して これを実現する方法についての詳細なガイドを示します websockets

ステップ 1: WebSocket ライブラリをインストールする

まず、 websockets 次のコマンドを実行してライブラリをインストールします terminal。

pip install websockets

ステップ 2: サーバー上でメッセージを送受信する

以下は、サーバー上でメッセージを送受信する方法の例です WebSocket。

import asyncio  
import websockets  
  
# WebSocket connection handling function  
async def handle_connection(websocket, path):  
    async for message in websocket:  
        await websocket.send(f"Server received: {message}")  
  
# Initialize the WebSocket server  
start_server = websockets.serve(handle_connection, "localhost", 8765)  
  
# Run the server within the event loop  
asyncio.get_event_loop().run_until_complete(start_server)  
asyncio.get_event_loop().run_forever()  

コードスニペットでは次のようになります。

  • async def handle_connection(websocket, path):: この関数は WebSocket 接続を処理します。 クライアントがメッセージを送信すると、この関数はそれをリッスンして応答を送り返します。

  • async for message in websocket:: このループは、接続を通じてクライアントからのメッセージを待機します WebSocket。

  • await websocket.send(f"Server received: {message}"): この関数は、接続を介してサーバーからクライアントに応答を送り返します WebSocket。

ステップ 3: クライアントからのメッセージの送受信

クライアントがサーバーとメッセージを送受信する方法の例を次に示します WebSocket。

import asyncio  
import websockets  
  
async def send_and_receive():  
    async with websockets.connect("ws://localhost:8765") as websocket:  
        await websocket.send("Hello, WebSocket!")  
        response = await websocket.recv()  
        print("Received:", response)  
  
asyncio.get_event_loop().run_until_complete(send_and_receive())  

コードスニペットでは次のようになります。

  • async with websockets.connect("ws://localhost:8765") as websocket:: これは、クライアントが WebSocket サーバーに接続する方法です。 localhost クライアントは、アドレスとポート への接続を確立します 8765

  • await websocket.send("Hello, WebSocket!"): クライアントはメッセージを  サーバーに送信します。 Hello, WebSocket!

  • response = await websocket.recv(): クライアントは、接続を介してサーバーからの応答を受信するのを待ちます WebSocket。

結論

WebSocket 手順に従い、例の各部分を理解することで、を 介してメッセージを送受信する方法を学習できました Python。 これにより、リアルタイム アプリケーションの作成や、サーバーとクライアント間の継続的なデータ交換の可能性が広がります。