Files
loon-backend/loon/mqtt/handlers/world.py
T
ciomek 279b2a7e90
Build and Push Docker Image / build-and-push (push) Successful in 18s
Initial commit
2026-08-16 11:41:07 +02:00

35 lines
803 B
Python

import json
import re
import redis
from config import settings
from loon.redis.chunk import set_chunk_cache
from loon.web.users.state import user_threads
async def world_handler(client, userdata, msg):
chunk_topic = re.compile(r"^loon/world/chunk/(-?\d+)/(-?\d+)$")
match = chunk_topic.match(msg.topic)
if not match:
return
try:
data = json.loads(msg.payload.decode())
except json.JSONDecodeError:
return
x, z = match.group(1), match.group(2)
envelope = json.dumps({"topic": f"world/chunk/{x}/{z}", "payload": data})
if settings.redis.enabled:
try:
set_chunk_cache(int(x), int(z), data)
except redis.RedisError:
pass
for queue in list(user_threads.values()):
await queue.put(envelope)