public Task <string> SendStringMessageForResultAsync(params string[] values)
 {
     UnityAppCommManager.Message message = new UnityAppCommManager.Message();
     message.ResponseNeeded = true;
     message.ValueList.AddRange(values);
     lock (_WaitForResponseMessagesLock)
     {
         _WaitForResponseMessages.Add(message.Uuid, message);
     }
     CefBrowser.GetMainFrame().ExecuteJavaScriptAsync("gameInstance.SendMessage(\"XJUnityUtilCenter\", \"OnMessageReceived\", \"" + HttpUtility.UrlEncode(message.EncodeToString()) + "\")");
     return(Task.Run <string>(() =>
     {
         while (true)
         {
             lock (_ResponseMessagesLock)
             {
                 if (_ResponseMessages.ContainsKey(message.Uuid))
                 {
                     var responseMessage = _ResponseMessages[message.Uuid];
                     _ResponseMessages.Remove(message.Uuid);
                     lock (_WaitForResponseMessagesLock)
                     {
                         _WaitForResponseMessages.Remove(message.Uuid);
                     }
                     return responseMessage.ValueList[0];
                 }
             }
         }
     }));
 }
示例#2
0
        public Task <string> SendStringMessageForResultAsync(params string[] values)
        {
            /*
             * Message message = new Message(true, values);
             * _UnfetchedMessageBuffer.Enqueue(message);
             * return Task.Run<string>(() =>
             * {
             *  while (!message.Responsed)
             *  {
             *
             *  }
             *  return message.ResponseMessage;
             * });*/

            UnityAppCommManager.Message message = new UnityAppCommManager.Message();
            message.ResponseNeeded = true;
            message.ValueList.AddRange(values);
            lock (_WaitForResultMessagesLock)
            {
                _WaitForResultMessages.Add(message.Uuid, message);
            }
            lock (_UnfetchedMessageBufferLock)
            {
                _UnfetchedMessageBuffer.Enqueue(message);
            }
            //CefBrowser.GetMainFrame().ExecuteJavaScriptAsync("gameInstance.SendMessage(\"XJUnityUtilCenter\", \"OnMessageReceived\", \"" + message.EncodeToString() + "\")");
            return(Task.Run <string>(() =>
            {
                while (true)
                {
                    lock (_ResponseMessagesLock)
                    {
                        if (_ResponseMessages.ContainsKey(message.Uuid))
                        {
                            var responseMessage = _ResponseMessages[message.Uuid];
                            _ResponseMessages.Remove(message.Uuid);
                            lock (_WaitForResultMessagesLock)
                            {
                                _WaitForResultMessages.Remove(message.Uuid);
                            }
                            return responseMessage.ValueList[0];
                        }
                    }
                }
            }));
        }
示例#3
0
        private IEnumerator _GetText()
        {
            while (true)
            {
                UnityWebRequest www = UnityWebRequest.Get("http://localhost:" + EditorDebugPort + "/getmessage/");
                yield return(www.SendWebRequest());

                if (www.isNetworkError || www.isHttpError)
                {
                    Debug.Log(www.error);
                }
                else
                {
                    string[] messagesString = www.downloadHandler.text.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string messageString in messagesString)
                    {
                        UnityAppCommManager.Message decodedMessage = new UnityAppCommManager.Message();
                        string[] pairsStrings = messageString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string pairString in pairsStrings)
                        {
                            string[] pairStrings = pairString.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                            string   key         = pairStrings[0];
                            string   value       = pairStrings[1];
                            if (key == "UUID")
                            {
                                decodedMessage.Uuid = Guid.Parse(value);
                            }
                            else if (key == "ResponseNeeded")
                            {
                                decodedMessage.ResponseNeeded = bool.Parse(value);
                            }
                            else if (key == "MESSAGE_0")
                            {
                                decodedMessage.Value = value;
                            }
                        }
                        //_ReceivedMessageBuffer.Add(decodedMessage);
                        Debug.Log("NEW_MESSAGE::\n" + decodedMessage);
                    }
                }
            }
        }
 private void _OnReceived(object sender, UnityAppCommManager.Message e)
 {
     System.Diagnostics.Debug.WriteLine(e);
 }
 public void SendStringMessage(params string[] values)
 {
     UnityAppCommManager.Message message = new UnityAppCommManager.Message(false, values);
     CefBrowser.GetMainFrame().ExecuteJavaScriptAsync("gameInstance.SendMessage(\"XJUnityUtilCenter\", \"OnMessageReceived\", \"" + HttpUtility.UrlEncode(message.EncodeToString()) + "\")");
 }