获取变量更新
- 更新时间2025-08-27
- 阅读时长2分钟
HTTP客户端必须手动问询以获取更新。HTTP没有提供一个事件或改动的推送方法来通知其HTTP客户端。为了避免轮询时产生的无效流量,OData的$deltatoken参数仅返回改动或添加项。
在VariableValueGroups情况下,$deltatoken提供更新的变量值,忽略自上次请求以来没有改动的变量值。
工作原理如下:
HTTP客户端读取组的VariableValues属性。
GET http://my_server:3580/nivariable/VariableValueGroups('1587dcd4a87d118ae3ddd0fce09246f6')/VariableValues?$format=json
HTTP客户端获取初始数据集合。要获取服务器端的改动,HTTP使用下列_delta属性提供的URI和VariableValue读数的时间标识作为$deltatoken。
GET http://my_server:3580/nivariable/VariableValueGroups('1587dcd4a87d118ae3ddd0fce09246f6')/VariableValues?$format=json&$deltatoken=1305692428170
如自上一次GET请求以来没有改动,结果为空。如要再次获取改动,使用上次回复的delta URI。
GET http://my_server:3580/nivariable/VariableValueGroups('1587dcd4a87d118ae3ddd0fce09246f6')/VariableValues?$format=json&$deltatoken=1305692428170
按指定周期轮询捆绑至外部I/O或其他共享变量的变量
如共享变量捆绑至外部I/O或其他共享变量,值更新的时间标签可能早于deltatoken。例如,在时间t请求△值的改动,新值改动会在t +1时达到,但时间戳是t -1。下一次得到另一个服务器端的改动时,服务器便不再把t -1时间戳的值视为新值。要避免该问题,使用$delta按指定的周期轮询变量值。