/// <summary> /// When the json string is successfully parsed will return with an IServerMessage implementation. /// </summary> public static IServerMessage Parse(IJsonEncoder encoder, string json) { // Nothing to parse? if (string.IsNullOrEmpty(json)) { HTTPManager.Logger.Error("MessageFactory", "Parse - called with empty or null string!"); return null; } // We don't have to do further decoding, if it's an empty json object, then it's a KeepAlive message from the server if (json.Length == 2 && json == "{}") return new KeepAliveMessage(); IDictionary<string, object> msg = null; try { // try to decode the json message with the encoder msg = encoder.DecodeMessage(json); } catch(Exception ex) { HTTPManager.Logger.Exception("MessageFactory", "Parse - encoder.DecodeMessage", ex); return null; } if (msg == null) { HTTPManager.Logger.Error("MessageFactory", "Parse - Json Decode failed for json string: \"" + json + "\""); return null; } // "C" is for message id IServerMessage result = null; if (!msg.ContainsKey("C")) { // If there are no ErrorMessage in the object, then it was a success if (!msg.ContainsKey("E")) result = new ResultMessage(); else result = new FailureMessage(); } else result = new MultiMessage(); result.Parse(msg); return result; }
/// <summary> /// This callback function will be called every time we try to access a protected API while we are using an non-authenticated connection. /// </summary> private void OnInvokeFailed(Hub hub, ClientMessage originalMessage, FailureMessage result) { Debug.LogWarning(hub.Name + " " + result.ErrorMessage); }