protected override void InitComponents() { UICommonWait.Show(); WebSocketConnector.Instance.OnInit(Utils.WebSocketURL + "username="******"&token=" + UILogin.token , (openEvt) => { UICommonWait.Hide(); LoadAnotherUI <UMUIMain>(); }, (msgEvt) => { }, (errorEvt) => { UIAlert.Show("WSError:" + errorEvt.Message); }, (closeMsg) => { UICommonWait.Hide(); }); }
private void OnCreateOrderCb(UEventBase obj) { var eb = obj as EventCreateOrder; AOutput.Log($"obj {eb.eResult} {eb.orderID} {eb.extraInfo}"); //AClientApis.OnPay(1); UICommonWait.Show(); if (Application.platform == RuntimePlatform.IPhonePlayer) { OnSendSDKMessage("SDK_AppleInApp", "OnBuyProduct", "0"); } else { var jo = Newtonsoft.Json.JsonConvert.DeserializeObject(eb.extraInfo) as JObject; OnSendSDKMessage("SDK_WeChat", "OpenWechatPay", $"{jo["prepayid"]},{jo["noncestr"]},{jo["timestamp"]},{jo["sign"]}"); } }
private void Update() { if (callbacksProducing.Count == 0) { return; } callbacksConsuming.AddRange(callbacksProducing); foreach (var c in callbacksConsuming) { callbacksProducing.Remove(c); } foreach (var cb in callbacksConsuming) { cb(); } callbacksConsuming.Clear(); UICommonWait.Hide(); }
private void Update() { if (callbacks.Count == 0) { return; } lock (lockObj) { foreach (var cb in callbacks) { //if (cb.Target != null) { cb(); } } callbacks.Clear(); UICommonWait.Hide(); } }
public void OnClose() { if (!bConnected) { return; } bConnected = false; this.closeAction = null; UnityEngine.Debug.Log("ws close on purpose."); if (ws != null) { UICommonWait.Show(); new Task(() => { ws.Close(); callbackAdd.Add(() => { UICommonWait.Hide(); }); }).Start(); } }
protected override void InitComponents() { btnDailyCheck = FindWidget <Button>("btnDailyCheck"); btnDailyCheck.onClick.AddListener(() => { AClientApis.OnDailyCheck(); }); var textUsername = FindWidget <Text>("textUsername"); textUsername.text = CakeClient.GetCake("pinfo", CakeAvatar.myID).GetStringValue(ParamNameDefs.AvatarName); textGold = FindWidget <Text>("textGold"); textGold.text = "0"; textDiamond = FindWidget <Text>("textDiamond"); textDiamond.text = "0"; var btnLogout = FindWidget <Button>("btnLogout"); btnLogout.onClick.AddListener(() => { AClientApp.OnDisconnect(); OnUnloadThis(); LoadAnotherUI <UIMinerLogin>(); }); var btnPay = FindWidget <Button>("btnPay"); btnPay.onClick.AddListener(() => { //AClientApis.OnPay(1); AClientApis.OnCreateOrder(1); }); var btnExchange = FindWidget <Button>("btnExchange"); btnExchange.onClick.AddListener(() => { AClientApis.OnExchange(1); }); OnParamUpdateCb(null); RegisterEvent(UEvents.ParamUpdate, OnParamUpdateCb); RegisterEvent(UEvents.EventCreateOrder, OnCreateOrderCb); //var map01 = LoadClass<UMinerMap>("UI/MinerMap/Map01"); AClientApis.OnGetSdata(""); OnRegistAction(str => { UICommonWait.Hide(); var astrs = str.Split(' '); switch (astrs[0]) { case "ProvideContent": UIAlert.Show("ProvideContent " + str); break; case "FailedTransactions": UIAlert.Show("FailedTransactions " + str); break; case "UpdateTransactions": UIAlert.Show("UpdateTransactionss " + str); break; } }); }
public void OnInit(string wsurl, Action <EventArgs> openAction, Action <MessageEventArgs> msgAction , Action <ErrorEventArgs> errorAction, Action <string> closeAction) { if (bConnecting || bConnected) { return; } this.closeAction = closeAction; ws = new WebSocket(wsurl); ws.OnOpen += (sender, e) => { UnityEngine.Debug.Log("OnOpen:" + wsurl); bConnecting = false; bConnected = true; lock (lockObj) { callbackAdd.Add(() => { UICommonWait.Hide(); openAction(e); }); } receive = true; }; ws.OnMessage += (sender, e) => { if (e.Data == "ping") { receive = true; } else { UnityEngine.Debug.Log("OnMessage:" + (e.IsText ? e.Data : e.RawData.Length.ToString())); lock (lockObj) { callbackAdd.Add(() => { msgAction(e); var amsg = e.Data.Split('?'); if (amsg.Length > 1) { OnResponse(amsg[0], amsg[1]); } }); } } }; ws.OnError += (sender, e) => { UnityEngine.Debug.Log("OnError:" + e.Message); lock (lockObj) { callbackAdd.Add(() => { errorAction(e); }); } }; ws.OnClose += (sender, e) => { bConnecting = false; bConnected = false; closeAction?.Invoke(e.Reason); UnityEngine.Debug.Log("OnClose:" + e.Reason); }; bConnecting = true; UnityEngine.Debug.Log("ws.Connect() " + wsurl); UICommonWait.Show(); new Thread(new ThreadStart(() => { try { ws.Connect(); } catch { UnityEngine.Debug.Log("connect failed:" + wsurl); } })).Start(); }
protected override void InitComponents() { mycard = FindWidget <RawImage>("mycard"); mycard.gameObject.SetActive(false); var btn = mycard.gameObject.AddComponent <Button>(); btn.onClick.AddListener(() => { if (whosTurn != UILogin.CachedUsername) { UICommonTips.AddTip("还没轮到你出牌。"); return; } mycard.color = Color.grey; WebSocketConnector.Instance.OnRemoteCall("roomOp", ""); }); othercard = FindWidget <RawImage>("othercard"); othercard.gameObject.SetActive(false); var bgpath = new string[] { "Images/Pai/bg1", "Images/Pai/bg2" }; UHotAssetBundleLoader.Instance.OnDownloadResources(() => { mycard.texture = UHotAssetBundleLoader.Instance.OnLoadAsset <Texture2D>(bgpath[random.Next(bgpath.Length)]); othercard.texture = UHotAssetBundleLoader.Instance.OnLoadAsset <Texture2D>(bgpath[random.Next(bgpath.Length)]); }, bgpath); textMyCardCount = FindWidget <Text>("textMyCardCount"); textMyCardCount.text = "0"; textMyAvatarname = FindWidget <Text>("textMyAvatarname"); textMyAvatarname.text = URemoteData.AvatarName; textMyLevel = FindWidget <Text>("textMyLevel"); ShowLevel(); textOtherCardCount = FindWidget <Text>("textOtherCardCount"); textOtherCardCount.text = "0"; textOtherLevel = FindWidget <Text>("textOtherLevel"); textOtherAvatarname = FindWidget <Text>("textOtherAvatarname"); RegisterReturnButton(); btnJoinRoom = FindWidget <Button>("btnJoinRoom"); btnJoinRoom.onClick.AddListener(() => { WebSocketConnector.Instance.OnRemoteCall("joinRoom", "老牛赶大车"); }); cardcell = FindWidget <Transform>("cardcell"); cardcell.gameObject.SetActive(false); otherinfo = FindWidget <Transform>("otherinfo"); otherinfo.gameObject.SetActive(false); URemoteData.ListeningParam(InfoNameDefs.AvatarLevel, ShowLevel); UICommonWait.Show(); WebSocketConnector.Instance.OnInit(Utils.WebSocketURL + UILogin.CachedUsernameAndTokenArguments, evt => { UICommonWait.Hide(); }, msgEvt => { }, errEvt => { }, closeEvt => { }); WebSocketConnector.Instance.OnRegisterResponse("enter", OnJoinRoomCB); WebSocketConnector.Instance.OnRegisterResponse("cardsync", OnCardsSync); WebSocketConnector.Instance.OnRegisterResponse("result", OnResult); WebSocketConnector.Instance.OnRegisterResponse("dismissed", OnDismissed); }
//private static object lockObj = new object(); private void DoRequest(string url, string scontent, Action <Newtonsoft.Json.Linq.JObject> actionResult, Action <string> actionFailed, bool bSortArguments, bool bShowCommonWait) { if (bShowCommonWait) { UICommonWait.Show(); } new Thread(new ThreadStart(() => { try { var uri = $"{url}?{scontent}"; Debug.Log($"request {uri}"); var req = (HttpWebRequest)HttpWebRequest.Create(uri); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { var result = new StreamReader(wr.GetResponseStream(), Encoding.UTF8).ReadToEnd(); if (string.IsNullOrEmpty(result)) { UIAlert.Show($"{url}请求返回空。"); return; } Debug.Log($"url {uri} result {result}"); //lock (lockObj) { callbacksProducing.Add(() => { actionResult(JsonConvert.DeserializeObject(result) as JObject); }); } } } catch (WebException ex) { Debug.Log($"web sender WebException:{ex.Message}\r\n{ex.StackTrace}"); //lock (lockObj) { callbacksProducing.Add(() => { UIAlert.Show($"请求失败:{url} Web崩溃信息:{ex.Message}"); if (actionFailed != null) { actionFailed(ex.Message); } }); } } catch (Exception ex) { Debug.Log($"web sender error:{ex.Message}\r\n{ex.StackTrace}"); //lock (lockObj) { callbacksProducing.Add(() => { UIAlert.Show($"请求失败:{url} 崩溃信息:{ex.Message}"); if (actionFailed != null) { actionFailed(ex.Message); } }); } } } )).Start(); }
//private static object lockObj = new object(); private void DoGet(string url, Action <Newtonsoft.Json.Linq.JObject> actionResult, Action <string> actionFailed) { UICommonWait.Show(); new Thread(new ThreadStart(() => { try { var req = (HttpWebRequest)HttpWebRequest.Create(url); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { var result = new StreamReader(wr.GetResponseStream(), Encoding.UTF8).ReadToEnd(); if (string.IsNullOrEmpty(result)) { UIAlert.Show($"{url}请求返回空。"); return; } Debug.Log($"url {url} result {result}"); //lock (lockObj) { callbacksProducing.Add(() => { //result = FilterResult(result); Debug.Log($"url {url} FilterResult {result.URLDecode()}"); var jres = JsonConvert.DeserializeObject(result) as Newtonsoft.Json.Linq.JObject; actionResult?.Invoke(jres); }); } } } catch (WebException ex) { Debug.Log($"web sender WebException:{ex.Message}\r\n{ex.StackTrace}"); //lock (lockObj) { callbacksProducing.Add(() => { UIAlert.Show($"请求失败:{url} Web崩溃信息:{ex.Message}"); if (actionFailed != null) { actionFailed(ex.Message); } }); } } catch (Exception ex) { Debug.Log($"web sender error:{ex.Message}\r\n{ex.StackTrace}"); //lock (lockObj) { callbacksProducing.Add(() => { UIAlert.Show($"请求失败:{url} 崩溃信息:{ex.Message}"); if (actionFailed != null) { actionFailed(ex.Message); } }); } } } )).Start(); }
protected override void InitComponents() { UICommonWait.Show(); Task.Run(async() => { if (!LibClient.AClientApp.bConnected) { await LibClient.AClientApp.StartClient(); } UWebSender.Instance.AddProducingAction(() => { UICommonWait.Hide(); }); }); inputUsername = FindWidget <InputField>("inputUsername"); if (!string.IsNullOrEmpty(CachedUsername)) { inputUsername.text = CachedUsername; } inputPassword = FindWidget <InputField>("inputPassword"); var btnLogin = FindWidget <Button>("btnLogin"); btnLogin.onClick.AddListener(() => { Task.Run(async() => { if (!LibClient.AClientApp.bConnected) { await LibClient.AClientApp.StartClient(); } if (!LibClient.AClientApp.bConnected) { AOutput.Log($"连接失败!"); return; } UWebSender.Instance.AddProducingAction(OnLogin); }); btnLogin.enabled = false; }); var btnRegister = FindWidget <Button>("btnRegister"); btnRegister.onClick.AddListener(() => { OnUnloadThis(); LoadAnotherUI <UIRegister>(); }); if (!string.IsNullOrEmpty(token)) { inputPassword.text = "******"; btnLogin.enabled = false; UStaticWebRequests.OnWebRequest("Login/CheckToken", "username="******"&token=" + token, jobj => { OnSelectAvatar(); }, jfail => { btnLogin.enabled = true; inputPassword.text = ""; token = ""; }); } }