static void SimulateSales(string country, string product) { using (GatewayWebSocketClient websocketClient = new GatewayWebSocketClient()) { websocketClient.ConnectAsync("ws://localhost:31024/SalesServiceWS/").Wait(); PostSalesModel postSalesModel = new PostSalesModel { Product = product, Country = country }; IWsSerializer serializer = SerializerFactory.CreateSerializer(); byte[] payload = serializer.SerializeAsync(postSalesModel).Result; WsRequestMessage mreq = new WsRequestMessage { Operation = "sell", Value = payload }; WsResponseMessage mresp = websocketClient.SendReceiveAsync(mreq, CancellationToken.None).Result; if (mresp.Result == WsResult.Error) { Console.WriteLine("Error: {0}", Encoding.UTF8.GetString(mresp.Value)); } } }
public async Task <byte[]> ProcessWsMessageAsync(byte[] wsrequest, CancellationToken cancellationToken) { ProtobufWsSerializer mserializer = new ProtobufWsSerializer(); WsRequestMessage mrequest = await mserializer.DeserializeAsync <WsRequestMessage>(wsrequest); switch (mrequest.Operation) { case "sell": { IWsSerializer pserializer = SerializerFactory.CreateSerializer(); PostSalesModel payload = await pserializer.DeserializeAsync <PostSalesModel>(mrequest.Value); //await this.PurchaseProduct(payload.ProductId, payload.Quantity); var id = payload.Country + "-" + payload.Product; var candidate = ActorProxy.Create <IProductActor>(new ActorId(id), "fabric:/ECommerceApplication"); await candidate.SellAsync(); } break; } WsResponseMessage mresponse = new WsResponseMessage { Result = WsResult.Success }; return(await mserializer.SerializeAsync(mresponse)); }