'Declaration
Property SessionTimeout As Integer
'Usage
Dim instance As _UAClientSessionParameters Dim value As Integer instance.SessionTimeout = value value = instance.SessionTimeout
int SessionTimeout {get; set;}
'Declaration
Property SessionTimeout As Integer
'Usage
Dim instance As _UAClientSessionParameters Dim value As Integer instance.SessionTimeout = value value = instance.SessionTimeout
int SessionTimeout {get; set;}
This parameter is not interpreted by the component; it is simply passed down to the OPC UA Stack for processing.
The value of this parameter is only used if no debugger is attached to the process. Otherwise, the value from SessionTimeoutDebug parameter is used.
Note that the actual session timeout that will be used is negotiated between the OPC UA client and OPC UA server. The value of this parameter is only a "request" from the client side, and can be revised by the server - the server has the final word.
CreateSession Service Parameters, RequestedSessionTimeout: "Duration. Requested maximum number of milliseconds that a Session should remain open without activity. If the Client fails to issue a Service request within this interval, then the Server shall automatically terminate the Client Session."
In order to obtain or modify this parameter, in the default state (when OpcLabs.EasyOpc.UA.EasyUAClientCore.Isolated equals to false
), access OpcLabs.EasyOpc.UA.Engine.UAClientAdaptableParameters.SessionParameters property of static OpcLabs.EasyOpc.UA.EasyUAClientCore.AdaptableParameters. If you have set OpcLabs.EasyOpc.UA.EasyUAClientCore.Isolated to true
, you need to access OpcLabs.EasyOpc.UA.Engine.UAClientAdaptableParameters.SessionParameters property of OpcLabs.EasyOpc.UA.EasyUAClientCore.IsolatedParameters.
// This example shows how to set fairly short OPC UA timeouts (failures can thus occur). // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using System; using OpcLabs.EasyOpc.UA; namespace UADocExamples._UAClientSessionParameters { class Timeouts { public static void Isolated() { UAEndpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) // or "https://opcua.demo-this.com:51212/UA/SampleServer/" // Instantiate the client object and set timeouts var client = new EasyUAClient { Isolated = true, IsolatedParameters = { SessionParameters = { EndpointSelectionTimeout = 1500, SessionConnectTimeout = 3000, SessionTimeout = 3000, SessionTimeoutDebug = 3000 } } }; Console.WriteLine("Subscribing..."); // The callback is a lambda expression the displays the value client.SubscribeDataChange(endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000, (sender, eventArgs) => { if (eventArgs.Succeeded) Console.WriteLine("Value: {0}", eventArgs.AttributeData.Value); else Console.WriteLine("*** Failure: {0}", eventArgs.ErrorMessageBrief); }); Console.WriteLine("Processing data change events for 10 seconds..."); System.Threading.Thread.Sleep(10 * 1000); Console.WriteLine("Unsubscribing..."); client.UnsubscribeAllMonitoredItems(); Console.WriteLine("Waiting for 2 seconds..."); System.Threading.Thread.Sleep(2 * 1000); } } }
# This example shows how to set fairly short OPC UA timeouts (failures can thus occur). # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.UA import * from OpcLabs.EasyOpc.UA.OperationModel import * def dataChangeNotification(sender, eventArgs): # Display value. if eventArgs.Succeeded: print('Value: ', eventArgs.AttributeData.Value, sep='') else: print('*** Failure: ', eventArgs.ErrorMessageBrief, sep='') endpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:51210/UA/SampleServer') # or 'http://opcua.demo-this.com:51211/UA/SampleServer' (currently not supported) # or 'https://opcua.demo-this.com:51212/UA/SampleServer/' # Instantiate the client object and set timeouts. client = EasyUAClient() client.Isolated = True client.IsolatedParameters.SessionParameters.EndpointSelectionTimeout = 1500 client.IsolatedParameters.SessionParameters.SessionConnectTimeout = 3000 client.IsolatedParameters.SessionParameters.SessionTimeout = 3000 client.IsolatedParameters.SessionParameters.SessionTimeoutDebug = 3000 print('Subscribing...') IEasyUAClientExtension.SubscribeDataChange(client, endpointDescriptor, UANodeDescriptor('nsu=http://test.org/UA/Data/ ;i=10853'), 1000, EasyUADataChangeNotificationEventHandler(dataChangeNotification)) print('Processing data change events for 10 seconds...') time.sleep(10) print('Unsubscribing...') client.UnsubscribeAllMonitoredItems() print('Waiting for 2 seconds...') time.sleep(2) print('Finished.')
' This example shows how to set fairly short OPC UA timeouts (failures can thus occur). ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Imports OpcLabs.EasyOpc.UA Namespace _UAClientSessionParameters Partial Friend Class Timeouts Public Shared Sub Isolated() ' Define which server we will work with. Dim endpointDescriptor As UAEndpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) ' or "https://opcua.demo-this.com:51212/UA/SampleServer/" ' Instantiate the client object and set timeouts Dim client = New EasyUAClient() With { .Isolated = True, .IsolatedParameters = New Engine.EasyUAAdaptableParameters() With { .SessionParameters = New Engine.UASmartSessionParameters() With { .EndpointSelectionTimeout = 1500, .SessionConnectTimeout = 3000, .SessionTimeout = 3000, .SessionTimeoutDebug = 3000 } } } Console.WriteLine("Subscribing...") ' The callback is a lambda expression the displays the value client.SubscribeDataChange(endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000, Sub(sender, eventArgs) If eventArgs.Succeeded Then Console.WriteLine("Value: {0}", eventArgs.AttributeData.Value) Else Console.WriteLine("*** Failure: {0}", eventArgs.ErrorMessageBrief) End If End Sub) Console.WriteLine("Processing data change events for 10 seconds...") Threading.Thread.Sleep(10 * 1000) Console.WriteLine("Unsubscribing...") client.UnsubscribeAllMonitoredItems() Console.WriteLine("Waiting for 2 seconds...") Threading.Thread.Sleep(2 * 1000) End Sub End Class End Namespace
// Shows an OPC UA data change observable with specified timeouts. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . using OpcLabs.EasyOpc.UA.Reactive; using System; using System.Threading; using OpcLabs.EasyOpc.UA; namespace ReactiveDocExamples { namespace _UADataChangeNotificationObservable { partial class Subscribe { public static void Timeouts() { // Define which server we will work with. UAEndpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) // or "https://opcua.demo-this.com:51212/UA/SampleServer/" Console.WriteLine("Creating observable..."); UADataChangeNotificationObservable<float> observable = UADataChangeNotificationObservable.Create<float>( endpointDescriptor, "nsu=http://test.org/UA/Data/ ;i=10853", 1000); // Set fairly short timeouts (failure can thus occur). observable.ClientSelector.Isolated = true; observable.ClientSelector.IsolatedParameters.SessionParameters.EndpointSelectionTimeout = 1500; observable.ClientSelector.IsolatedParameters.SessionParameters.SessionConnectTimeout = 3000; observable.ClientSelector.IsolatedParameters.SessionParameters.SessionTimeout = 3000; observable.ClientSelector.IsolatedParameters.SessionParameters.SessionTimeoutDebug = 3000; Console.WriteLine("Subscribing..."); using (observable.Subscribe(e => Console.WriteLine( (e.Exception is null) ? e.AttributeData.ToString() : e.Exception.GetBaseException().ToString()))) { Console.WriteLine("Waiting for 10 seconds..."); Thread.Sleep(10*1000); Console.WriteLine("Unsubscribing..."); } Console.WriteLine("Waiting for 2 seconds..."); Thread.Sleep(2 * 1000); } } } }