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); } }); }
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); } }); }