中间件

在消息与状态传递的过程中,中间件位于主端与从端之间,按启用顺序依次对所有消息和状态进行监听、修改或拦截。

与信道一样,所有中间件也在 EFB 配置中拥有一个实例,并由协调器进行管理。然而,他们没有集中轮询线程,也就是说如果中间件想要在后台运行轮询线程或类似的线程,这些线程必须通过 Python 的 atexit 或其他方式停止。

消息和状态处理

默认情况下,每个中间件都有两个方法:process_message() 处理消息对象,以及 process_status() 处理状态对象。这两个方法默认继承的行为是不对传入的消息或状态进行更改。

要修改对象,只需要覆盖相应的方法,并该对象它进行修改。 要拦截一个对象,只需返回 None。对象被拦截后,它不会被传递到其他中间件或信道,也就是说中间件和信道都不应收到 None 消息或状态。

其他用法

中间件与通道相比限制较少,因此相对容易编写。进而中间件能够做到的不仅仅是截取消息和状态。

例如:

  • 定期向主端、从端群发消息

  • 集成聊天机器人(chat bot)功能

  • 面向供应商特定指令和附加功能的批量操作

  • 将从端的用户登录与外部程序共享

  • 等等……

实现细节

请参阅 Middleware