import asyncio import websockets import json import time # データの共有辞書 shared_data = { "latest_sensor_data": None, "last_message_time": None } # クライアントからのデータを処理し、共有データを更新 async def handle_client(websocket, path): global shared_data while True: try: # クライアントからのメッセージを受信 message = await websocket.recv() print(f"受信したメッセージ: {message}") # "ping"の場合、"pong"で応答 if message == "ping": await websocket.send("pong") continue # JSON形式のセンサーデータを受信した場合 sensor_data = json.loads(message) shared_data["latest_sensor_data"] = sensor_data shared_data["last_message_time"] = time.time() # 受信データをサーバー側に出力 print(f"最新センサーデータ: {shared_data['latest_sensor_data']}") except websockets.ConnectionClosed: print("クライアントとの接続が切断されました") break # WebSocketサーバーを起動 async def main(): async with websockets.serve(handle_client, "localhost", 8765): print("WebSocketサーバーが起動しました。") await asyncio.Future() # 無限に実行 # メイン関数の実行 if __name__ == "__main__": asyncio.run(main())