open62541 客户端断开连接时的 OPC UA 堆栈服务器端回调
Posted
技术标签:
【中文标题】open62541 客户端断开连接时的 OPC UA 堆栈服务器端回调【英文标题】:open62541 OPC UA stack server side callback on client disconnect 【发布时间】:2020-03-27 08:41:21 【问题描述】:我正在使用 open62541 OPC UA 堆栈版本 1.0 构建服务器。到目前为止效果很好。
当客户端断开连接时,我需要在服务器端进行一些维护。当客户端与 OPC UA 服务器断开连接时,是否有可能执行回调?或者,“会话关闭”或“安全通道关闭”也可以提供帮助。
感谢支持。
编辑: ...所以,我再次检查了访问控制 API 的文档,但我不清楚如何将它应用于我的问题。如果我用
运行服务器int main(void)
signal(SIGINT, stopHandler);
signal(SIGTERM, stopHandler);
UA_Server *server = UA_Server_new();
UA_ServerConfig_setDefault(UA_Server_getConfig(server));
UA_StatusCode retval = UA_Server_run(server, &running);
UA_Server_delete(server);
return retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE;
我只有服务器指针,也许还有配置。从这里开始,当客户端连接/断开连接时,服务器如何通知服务器,我如何捕获此事件,或者我是否需要定期检查是否有使用定时回调的连接客户端?如果是怎么办?游戏中的访问控制 API 又从何而来?
再次感谢
【问题讨论】:
欢迎来到 ***。您调查了什么(文档中的任何提示)? 我调查了 Access Controm API 文档(正如 Schroeder 回答的那样),但我找不到获取访问控制“对象”以及其中连接客户端的状态信息的方法/解决方案......也许我必须使用施罗德发布的链接进行更多调查...... 感谢您的欢迎。 【参考方案1】:您可以使用访问控制插件 API 来获取客户端连接和断开连接的时间。 (激活会话/关闭会话)。
见:
Access Control documentation
The default plugin as starting point
【讨论】:
感谢您的快速回复,我将在本周或下周尝试应用您的答案并尽快提供反馈。 我是否必须更改 AccessControl_default.c 并将其编译到合并文件 (.c/.h) 中? 您可以替换 UA_ServerConfig 中的 accessControl 并使用您的函数指针和数据初始化 UA_AccessControl 结构。 现在对我来说似乎合法且有意义。我会试一试。非常感谢您的帮助。以上是关于open62541 客户端断开连接时的 OPC UA 堆栈服务器端回调的主要内容,如果未能解决你的问题,请参考以下文章