public void Init(OnErrorReply onConnected) { MonoComponent = ServervilleHttpComponent.Get(); GetSerializerSettings(); if (onConnected != null) { onConnected(null); } }
public void Init(OnErrorReply onConnected) { GetSerializerSettings(); ServervilleWSComponent wsComp = ServervilleWSComponent.Get(); wsComp.UpdateEvent += Update; string url = SV.ServerURL + "/websocket"; ServerSocket = new WebSocket(url); ReplyCallbacks = new Dictionary <string, MessageReplyClosure>(); ServerSocket.OnOpen += (object sender, EventArgs e) => { if (onConnected != null) { onConnected(null); } }; ServerSocket.OnClose += OnWSClosed; ServerSocket.OnMessage += OnWSMessage; ServerSocket.OnError += (object sender, ErrorEventArgs e) => { Debug.Log("Connection error: " + e.ToString()); if (onConnected != null) { onConnected(ErrorReply.makeClientErrorCode(-2, e.Message)); } }; ServerSocket.Connect(); }
public IEnumerator PostJSON(ServervilleClient sv, string url, string request, Type replyType, string sessionId, Action <object> onSuccess, OnErrorReply onError) { using (UnityWebRequest www = new UnityWebRequest(url)) { www.method = UnityWebRequest.kHttpVerbPOST; UploadHandlerRaw upload = new UploadHandlerRaw(Encoding.UTF8.GetBytes(request)); upload.contentType = "application/json"; www.uploadHandler = upload; www.disposeUploadHandlerOnDispose = true; DownloadHandlerBuffer buffer = new DownloadHandlerBuffer(); www.downloadHandler = buffer; www.disposeDownloadHandlerOnDispose = true; if (sessionId != null) { www.SetRequestHeader("Authorization", sessionId); } if (sv.LogMessages) { Debug.Log("HTTP<- " + request); } yield return(www.Send()); if (www.isError) { ErrorReply err = ErrorReply.makeClientErrorCode(-2, www.error); if (onError != null) { onError(err); } yield break; } if (sv.LogMessages) { Debug.Log("HTTP-> " + buffer.text); } if (www.responseCode >= 200 && www.responseCode < 400) { object reply = JsonConvert.DeserializeObject(buffer.text, replyType, ServervilleHttp.JsonSettings); if (onSuccess != null) { onSuccess(reply); } } else { ErrorReply err = JsonConvert.DeserializeObject <ErrorReply>(buffer.text, ServervilleHttp.JsonSettings); sv.OnServerError(err); if (onError != null) { onError(err); } } if (www.GetResponseHeader("X-Notifications") != null) { // Pending notifications from the server! GetNotifications(sv); } } }
public void CallAPI <ReplyType>(string api, object request, Action <ReplyType> onSuccess, OnErrorReply onError) { string json = JsonConvert.SerializeObject(request, Formatting.None, JsonSettings); string url = SV.ServerURL + "/api/" + api; MonoComponent.StartCoroutine(MonoComponent.PostJSON(SV, url, json, typeof(ReplyType), SV.SessionId, delegate(object reply) { if (onSuccess != null) { onSuccess((ReplyType)reply); } }, onError)); }
public void CallAPI <ReplyType>(string api, object request, Action <ReplyType> onSuccess, OnErrorReply onError) { string messageNum = (MessageSequence++).ToString(); string json = JsonConvert.SerializeObject(request, Formatting.None, JsonSettings); string message = api + ":" + messageNum + ":" + json; MessageReplyClosure callback = delegate(bool isError, string replyJson) { if (isError) { ErrorReply err = JsonConvert.DeserializeObject <ErrorReply>(replyJson, JsonSettings); SV.OnServerError(err); if (onError != null) { onError(err); } } else { ReplyType reply = JsonConvert.DeserializeObject <ReplyType>(replyJson, JsonSettings); if (onSuccess != null) { onSuccess(reply); } } }; ReplyCallbacks.Add(messageNum, callback); ServerSocket.Send(message); }