import socketio

sio = socketio.AsyncServer(async_mode='asgi')

@sio.event
async def connect(sid, environ):
    print('Client connected:', sid)

@sio.event
async def disconnect(sid):
    print('Client disconnected:', sid)

@sio.event
async def join_room(sid, data):
    room = data['room']
    sio.enter_room(sid, room)
    await sio.emit('message', {'msg': f'{sid} has joined the room {room}'}, room=room)