I am developing a solution that will utilize the TransmitMessage to send data from Smart Client Plugin to MIP Component.
I have a plugin running on the smart client that sends data to MIP component (Run under event sever - Started by background plugin with TargetEnvironments - EnvironmentType.Service) using TransmitMessage.
Everything is working fine, in case of of Encryption option is OFF, I am able to receive the message.
However, when Encryption is ON. communication is not working.
Additional Details:
-
Tested with XProtect 2023 R3, 2022 R2
-
Followed this document to create self-signed certificate:
https://doc.milestonesys.com/sysarch/pdf/2023r3/en-US/MilestoneXProtectVMSproducts_Cer
tificatesGuide_en-US.pdf
- Client Code (Smart Client - Plug-in Integration) chunk — Sender
void SendMessage( string jsonRequest)
{
Item masterSite = EnvironmentManager.Instance.GetSiteItem(EnvironmentManager.Instance.MasterSite);
MessageCommunicationManager.Start(masterSite.FQID.ServerId);
MessageCommunication messageCommunication = MessageCommunicationManager.Get(masterSite.FQID.ServerId);
messageCommunication.TransmitMessage(new Message("MyCustomMessageMessage", jsonRequest), null, null, null);
}
- MIP Component code chunk – Receiver
void Register() {
Item masterSite = EnvironmentManager.Instance.GetSiteItem(EnvironmentManager.Instance.MasterSite);
MessageCommunicationManager.Start(masterSite.FQID.ServerId);
MessageCommunication messageCommunication = MessageCommunicationManager.Get(masterSite.FQID.ServerId);
msgRef.Add(messageCommunication.RegisterCommunicationFilter(new MessageReceiver(MyCustomMessageHandler),
new CommunicationIdFilter("MyCustomMessageMessage")));
}
private object MyCustomMessageHandler(VideoOS.Platform.Messaging.Message message, FQID destination, FQID sender)
{
System.Diagnostics.Debug.WriteLine("MyCustomMessageHandler: Message received");
EnvironmentManager.Instance.Log(false, "MyCustomMessageHandler", "Message received");
if (!(message != null && message.Data != null && message.Data is string msgData))
{
return null;
}
// MY CODE
return null;
}