fl_sim.messages#
在 Server 与 Client 节点之间交换的类型化消息。
旧式协议直接用魔法字符串键操作(私有的) _received_messages 容器,例如
# server -> client (legacy)
target._received_messages = {"parameters": params, "alpha": 0.01}
# client -> server (legacy)
target._received_messages.append(
ClientMessage(client_id=..., train_samples=..., metrics=...)
)
下文的类型化消息是推荐的替代方案:消息字段是显式的(因而可被 IDE 发现并在构造时得到校验),且(私有的)旧式容器会由 Client.receive() 与 Server.receive_one() 自动填充,因此旧式的消费代码(例如 Client.accept_parameters() )在过渡期间无需修改即可继续工作。
# server -> client (typed)
target.receive(ServerToClient(parameters=params, extras={"alpha": 0.01}))
# client -> server (typed)
target.receive_one(ClientToServer(client_id=..., train_samples=..., metrics=...))