File size: 1,548 Bytes
b4b645c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
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()) |