Exemplo n.º 1
0
 private string HttpInteropReceived(string endpoint, string requestBody)
 {
     if (endpoint == "meta")
     {
         int browserID;
         do
         {
             browserID = random.Next(100000, 1000000);
         } while (heartbeat.ContainsKey(browserID));
         return(string.Format(
                    "<xml><version>{0}</version><id>{1}</id></xml>",
                    PlatformFunction.VersionString,
                    browserID
                    ));
     }
     else if (endpoint == "heartbeat")
     {
         if (!int.TryParse(requestBody, out int clientID))
         {
             return(null);
         }
         heartbeat[clientID] = DateTime.Now.Ticks;
         var firstPending = jsQueue.FirstOrDefault();
         if (firstPending != null)
         {
             return(string.Format(
                        "<xml><id>{0}</id><script>{1}</script></xml>",
                        firstPending.Item1,
                        firstPending.Item2
                        ));
         }
         else if (heartbeat.Count > 1)
         {
             return("<xml><toomany></toomany></xml>");
         }
         else
         {
             return("<xml></xml>");
         }
     }
     else if (endpoint == "external")
     {
         InteropReceived?.Invoke(this, new InteropReceivedEventArgs(requestBody));
     }
     else if (int.TryParse(endpoint, out int jsQueueID))
     {
         var queueItem = jsQueue.First(t => t.Item1 == jsQueueID);
         if (queueItem == null)
         {
             return(null);
         }
         queueItem.Item3.TrySetResult(requestBody);
         SetMessage("Finished remote Javascript execution. #" + jsQueueID);
     }
     return(null);
 }
Exemplo n.º 2
0
 private void Browser_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
 {
     InteropReceived?.Invoke(this, new InteropReceivedEventArgs(UnescapeJsString(e.WebMessageAsJson)));
 }