public HubClientMessageWrapper ParseHubToClientMsg(string hubMsg) { var parsedMsg = new HubClientMessageWrapper(); //Client method content. var clientMethodContent = hubMsg.Substring(hubMsg.IndexOf("[")); //Remove leading trailing brackets. var strippedLeadingTrailingBrackets = clientMethodContent.TrimStart('[', '{').TrimEnd(']', '}'); //Break the message down into component parts hubname, methodname and method parameters. var hubNameClientMethodNameString = strippedLeadingTrailingBrackets.Substring(0, strippedLeadingTrailingBrackets.IndexOf("\"A\":") - 1); var clientMethodParameters = strippedLeadingTrailingBrackets.Substring(strippedLeadingTrailingBrackets.IndexOf("\"A\":")); var componentParts = hubNameClientMethodNameString.Split(',').ToList(); //Extract the hubname component. if (componentParts[0].Contains("\"H\"")) { parsedMsg.Hubname = componentParts[0].Split(':')[1].TrimStart('"').TrimEnd('"'); } //Extract the client method name. if (componentParts[1].Contains("\"M\"")) { parsedMsg.ClientMethodName = componentParts[1].Split(':')[1].TrimStart('"').TrimEnd('"'); } var clientMethodParametersSplit = clientMethodParameters.Split('['); //Extract the client method parameters. if (clientMethodParametersSplit[0].Contains("\"A\"")) { parsedMsg.ClientMethodParameters = '[' + clientMethodParametersSplit[1] + "}]"; } if (parsedMsg.Hubname == string.Empty || parsedMsg.ClientMethodName == string.Empty || parsedMsg.ClientMethodParameters == string.Empty) { // throw new SignelRMessageParseException(); } return(parsedMsg); }
public HubClientMessageWrapper ParseHubToClientMsg(string hubMsg) { var parsedMsg = new HubClientMessageWrapper(); //Client method content. var clientMethodContent = hubMsg.Substring(hubMsg.IndexOf("[")); //Remove leading trailing brackets. var strippedLeadingTrailingBrackets = clientMethodContent.TrimStart('[', '{').TrimEnd(']', '}'); //Break the message down into component parts hubname, methodname and method parameters. var hubNameClientMethodNameString = strippedLeadingTrailingBrackets.Substring(0, strippedLeadingTrailingBrackets.IndexOf("\"A\":") -1); var clientMethodParameters = strippedLeadingTrailingBrackets.Substring(strippedLeadingTrailingBrackets.IndexOf("\"A\":")); var componentParts = hubNameClientMethodNameString.Split(',').ToList(); //Extract the hubname component. if (componentParts[0].Contains("\"H\"")) { parsedMsg.Hubname = componentParts[0].Split(':')[1].TrimStart('"').TrimEnd('"'); } //Extract the client method name. if (componentParts[1].Contains("\"M\"")) { parsedMsg.ClientMethodName = componentParts[1].Split(':')[1].TrimStart('"').TrimEnd('"'); } var clientMethodParametersSplit = clientMethodParameters.Split('['); //Extract the client method parameters. if (clientMethodParametersSplit[0].Contains("\"A\"")) { parsedMsg.ClientMethodParameters = '['+ clientMethodParametersSplit[1] + "}]"; } if (parsedMsg.Hubname == string.Empty || parsedMsg.ClientMethodName == string.Empty || parsedMsg.ClientMethodParameters == string.Empty) { // throw new SignelRMessageParseException(); } return parsedMsg; }