async def METHOD_NAME(websocket: WebSocket, client_uri: str):
    await TrackingRouter.manager.connect(websocket)
    try:
        while True:
            raw_message = await websocket.receive_bytes()
            write_instructions = decode_tree(
                utils.unpack_args(raw_message))
            for instruction in write_instructions:
                resource_handler, method_name, args = instruction
                TrackingRouter._verify_resource_handler(
                    resource_handler, client_uri)
                checked_args = []
                for arg in args:
                    if isinstance(arg, utils.ResourceObject):
                        handler = arg.storage['handler']
                        TrackingRouter._verify_resource_handler(
                            handler, client_uri)
                        checked_args.append(
                            TrackingRouter.resource_pool[handler][1].ref)
                    else:
                        checked_args.append(arg)
                resource = TrackingRouter.resource_pool[resource_handler][1].ref
                if method_name.endswith('.setter'):
                    attr_name = method_name.split('.')[0]
                    setattr(resource, attr_name, checked_args[0])
                else:
                    attr = getattr(resource, method_name)
                    assert callable(attr)
                    attr(*checked_args)
            await websocket.send_bytes(b'OK')
    except WebSocketDisconnect:
        TrackingRouter.manager.disconnect(websocket)
    except Exception as e:
        await websocket.send_bytes(utils.pack_args(encode_tree(utils.build_exception(e))))