NCache 4.6 - Online Documentation

Monitoring Clients Connected to Cache

 
NCache provides the feature of enabling Client Activity Events. Using these events, each client that is connected to a clustered cache can subscribe to be notified about the connect/disconnect events of other clients. Each client can also specify a process level custom identifier which will be returned to the subscriber in case the client which specified it connects to or disconnects from a clustered cache.
 
Client Activity Events are fired when a client connects to or disconnects from a specified cache. These events are registered against the specified cache and will be handled in a user defined callback method.
 
Make sure that client events have been enabled through NCache Manager before proceeding to use them.
 
       To utilize the APIs, include the following namespaces in your application:
Alachisoft.NCache.Web.dll
Alachisoft.NCache.Runtime.dll
 
·     Create Event Callback Method
 
The callback method is user defined and is called once the clients are connected/disconnected from the cache. The method is registered against the CacheClientConnectivityChanged event property of CacheClientConnectivityChangedCallback type in a specific cache. Hence, the method created should match the signature of the delegate:
 
public delegate void CacheClientConnectivityChangedCallback(string cacheId, ClientInfo client, ConnectivityStatus status);
 
The method created contains the following parameters:
 
//user defined event callback method
static void MyClientConnectivityCallback(string cacheName, ClientInfo clientInfo, ConnectivityStatus status)
{
    //handle event
}
 
Parameters
Description
cacheName
Name of the cache with which the clients are connected. This is the sender of the event.
status
Enum which determines the connectivity status of the client:
·     Disconnected = 0
·     Connected = 1
clientInfo
An object of the ClientInfo class containing information regarding the client which caused the event to fire.
 
Client Info class
 
Member
Description
Default Value
AppName
User assigned, process-level, unique identifier
Client process ID
ClientID
Unique client identifier
-
IPAddress
IP through which the client is connected
-
MachineName
Machine Name of the client
-
ProcessID
Process ID of the client
-
 
 
·     Initialize Cache
 
The AppName is a process level unique identifier which can be assigned at the time of initialization. For this purpose, before initializing the cache client, create an instance of CacheInitParams and assign a custom identifier string to its AppName property.
 
Thus, if this client connects or disconnects, the callbacks of all the clients which subscribed to the Client Activity Events will get this AppName in their ClientInfo instance.
 
CacheInitParams initParams = new CacheInitParams();
initParams.AppName = "AssignedAppName"; //assign custom identifier
 
//initialize cache with custom AppName property
Cache cache = NCache.InitializeCache("CacheName", cacheParams);
 
·     Register Event
 
The method is registered by appending it to the CacheClientConnectivityChanged property as an event callback. This enables the client to listen for connect/disconnect events of other clients. If another client connects to or disconnects from the specified cache, the callback method is called.
 
//register method to event
cache.CacheClientConnectivityChanged += MyClientConnectivityCallback;
 
·     Monitor Client Info of Connected Clients
 
The ClientInfo of each connected client is available locally in the form of cache.ClientInfo property.
 
ClientInfo info = cache.ClientInfo;
 
string AppName = info.AppName;
string clientID = info.ClientID;
System.Net.IPAddress ip = info.IPAddress;
string machineName = info.MachineName;
int processID = info.ProcessID;
 
·     View List of Connected Clients
 
To get information of all the clients connected to the cache on demand, use the GetConnectedClientsList() method on the cache as:
 
IList<ClientInfo> connectedClients = cache.GetConnectedClientsList();
 
 
See Also