gallary2 / wsServer.py
OzoneAsai's picture
Upload 7 files
b4b645c verified
raw
history blame
1.55 kB
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())