How to implement a LDS server with Milo? #1015
Replies: 2 comments 4 replies
-
Yes.
It should pass its own endpoint URL, so other clients know where to find it.
You have to store it somewhere... not sure about an AddressSpace or not. It's an implementation detail.
You may need some other basic services as well, like Session and Attribute services, but I'm not sure.
Read everything in part 12 that pertains to Local Discovery: https://reference.opcfoundation.org/GDS/docs/ |
Beta Was this translation helpful? Give feedback.
-
Could you please tell me if this is correct? I am trying to implement RegisterServers() and FindServers(). For RegisterServers(), a UA Server calls on the method implemented by the LDS. In that call, it passes in the RegisteredServer data type which contains the gatewayServerUri, and discoveryUrls []. The gatewayServerUri is the pre-defined URL of the LDS and the discoveryUrls [] is the DiscoveryEndpoints for the server (which is what the UA Client gets from the LDS to connect to the UA Server). Then, the LDS registers the UA Server and stores it in the LDS Server. Then, a client calls the FindServers() method which is implemented by the LDS. When the client makes the FindServers() call, it passes in the endpointUrl which is again the same as the gatewayServerUri that it contains the URL to connect to the LDS. Then the FindServers() returns the data type ApplicationDescription which contains discoveryUrls [] which allows the client to then call the GetEndPoints using that discoverURL on the actual server and it returns EndpointDescription which contains endpointUrl and that is the FINAL endpoint needed by the client to connect to the server. Is this correct? I read part 12 of the reference and I am very confused on the different types of URLs, discovery endpoint, session endpoint, etc... What I am understanding is that every server has a discovery endpoint (to obtain information on how to connect. in the case of an LDS, client connects to discovery endpoint of LDS to obtain discoveryURL of UA Server which in turn the client uses that obtained discoveryURL to call getendpoints and obtain the actual URL to connect to it) and an endpoint to actually connect to it. Also, I was thinking of implementing LDS and there's an issue of running the discovery service registerServer and findServer in the background. Do you have any suggestions to implement this? For example, eventually when I implement LDS, it will be run as a jar file and I would want a UA Server to register itself to the LDS. How do I make it so that the UA server can do that while the LDS is running as a jar file? This was long and apologies for that. I would really appreciate if you give suggestions/ideas on this! |
Beta Was this translation helpful? Give feedback.
-
Hi. I am completely new to OPC UA and have been reading the documentation provided by the OPC foundation. I am working on a project that requires an implementation of LDS and I had a few questions.
Beta Was this translation helpful? Give feedback.
All reactions