我在ANSI C堆栈中遇到OPC UA订阅和通知问题。 OPC UA第4部分,服务说:
5.13.1订阅模型 5.13.1.1描述c)NotificationMessages被发送到客户端以响应发布请求。
发送怎么样?我真的期待某种回调,但似乎并不是一回事。它确实说这些是对“发布”的反应。请求,但发布服务电话确认收到通知,它似乎没有请求通知。此外,这将是民意调查,而且订阅和监控的重点不在于民意调查。
任何人都可以提供一个示例,显示在ANSI C中监视数据值吗?
答案 0 :(得分:4)
PublishRequests在服务器上排队,只有在通知准备好或需要发送保持活动时才返回响应(或者其他一些东西,请检查第4部分中的状态机描述)。
它们确实包括先前收到的通知的确认,但是想法是不立即预期响应,并且客户端通常会不断地将PublishRequests抽出,以便服务器有一个准备好返回它们的队列订阅需要时发出通知。
是的,这是民意调查。它不是一个严格的未经请求,但它的工作方式有点令人沮丧。
答案 1 :(得分:0)
这是C#代码。我希望它会对你有所帮助。
private NotificationMessageReceivedEventHandler
m_NotificationMessageReceived;
// ...
m_NotificationMessageReceived =
new NotificationMessageReceivedEventHandler
(Subscription_NotificationMessageReceived);
m_subscription.NotificationMessageReceived +=
Subscription_NotificationMessageReceived;
// ...
private void Subscription_NotificationMessageReceived
(Subscription subscription,
NotificationMessageReceivedEventArgs e)
{
if (e.NotificationMessage.NotificationData == null ||
e.NotificationMessage.NotificationData.Count == 0)
{
LogMessage("{0:HH:mm:ss.fff}: KeepAlive",
e.NotificationMessage.PublishTime.ToLocalTime());
}
}