Odoo 客户端即时刷新状态

Odoo client具备即时刷新数据的能力

它是通过 message bus 实现的, 它的技术架构是这样的

后端业务逻辑里面 往 bus 发送一个消息,这消息会被 client 侦听,也就是 long polling 服务;在 odoo 16 之后,改用 web socket 模式。 Client 启动时,会订阅 bus, 当 client 收到 消息后,它会触发一个 事件, 这事件将会 触发一个 数据刷新的 业务逻辑, 这个逻辑它执行 数据刷新,并将数据显示在 client 页面上。

   

下面,以 odoo 15 systray menu 上的 活动计数器为例 说明

在 客户端, 它会 侦听 activity_updated 这个 事件 event

   

收到 事件, 调用 _updateCounter 更新 页面

   

在来看看, client 是怎么 收到 后端发送过来的 消息的,它会轮询 bus service ;在 web socket 中,则是 订阅它

   

它是当 bus_serivice 收到 消息时, 在client 的 bus 触发一个 事件

   

最后,来看看 业务逻辑里面是 如何发送 消息的。它是直接往 bus.bus 发送一个消息, 当然这个消息,会被所有的 client 接收到。

   

Bus service 会持续不断的 polling 后端的 bus.bus 实现的 /longpolling/poll 服务

这也是 在 浏览器的 network 持续看到 longpolling 日志的原因

jeffery 2024年6月9日
标签
存档
Odoo 数据库中和