public void SendMessage(string methodProxyJson)
        {
            //TODO: Considering to send data from client side as binary Streamed JSON for performance in the future !
            //TODO: Still, the mismatching CLR type namespace need to be fixed first
            //Value type reference as byte[] and/or string are not good for performance


            Xamarin.Forms.Device.BeginInvokeOnMainThread(async() =>
            {
                MethodProxy taksInput  = null;
                MethodProxy taksOutput = null;

                try
                {
                    taksInput  = ContextBridge.GetMethodProxyFromJSON(ref methodProxyJson);
                    taksOutput = await ContextBridge.Receive(taksInput);
                }
                catch (Exception ex)
                {
                    ConsoleHelper.WriteLine("Error: [Native] - BlazorContextBridge.Receive: " + ex.Message);
                }

                try
                {
                    string jsonReturnValue = ContextBridge.GetJSONReturnValue(taksOutput);
                    SendMessageToClient(jsonReturnValue);
                }
                catch (Exception ex)
                {
                    ConsoleHelper.WriteLine("Error: [Native] - BlazorContextBridge.Send: " + ex.Message);
                }
            });
        }
Exemple #2
0
        protected override void OnMessageReceived(IWebSocketContext context, byte[] buffer, IWebSocketReceiveResult result)
        {
            //TODO: Considering to send data from client side as binary Streamed JSON for performance in the future !
            //Value type reference as byte[] and/or string are not good for performance
            string methodProxyJson = buffer.ToText();

            Xamarin.Forms.Device.BeginInvokeOnMainThread(() =>
            {
                MethodProxy taksInput  = null;
                MethodProxy taksOutput = null;

                try
                {
                    taksInput  = ContextBridge.GetMethodProxyFromJSON(methodProxyJson);
                    taksOutput = ContextBridge.Receive(taksInput);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: [Native] - BlazorContextBridge.Receive: " + ex.Message);
                }

                try
                {
                    string jsonReturnValue = ContextBridge.GetJSONReturnValue(taksOutput);
                    SendMessageToClient(jsonReturnValue);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: [Native] - BlazorContextBridge.Send: " + ex.Message);
                }
            });
        }
Exemple #3
0
 public void DidReceiveScriptMessage(WKUserContentController userContentController, WKScriptMessage message)
 {
     ContextBridge.BridgeEvaluator(Element, message.Body.ToString(), delegate(string result)
     {
         Control.EvaluateJavaScript((NSString)result, GetJavascriptEvaluationResultHandler());
     });
 }
Exemple #4
0
    public void InvokeAction(string data)
    {
        BlazorWebViewRenderer blazorRenderer;

        if (blazorViewRenderer != null && blazorViewRenderer.TryGetTarget(out blazorRenderer))
        {
            ContextBridge.BridgeEvaluator((BlazorWebView)blazorRenderer.Element, data);
        }
    }
Exemple #5
0
 private void Control_ScriptNotify(object sender, Windows.UI.Xaml.Controls.NotifyEventArgs e)
 {
     ContextBridge.BridgeEvaluator((BlazorWebView)Element, e.Value);
 }