Example #1
0
        static void Main(string[] args)
        {
            PostProductModel postProductModel = new PostProductModel
            {
                // generating new user id for every iteration
                ProductId = 701,
                Quantity  = 100
            };

            string        url        = "ws://127.0.0.1:3251/PublicGatewayWS";
            IWsSerializer serializer = SerializerFactory.CreateSerializer();

            byte[] payload = serializer.SerializeAsync(postProductModel).Result;

            WsRequestMessage mreq = new WsRequestMessage
            {
                PartitionKey = 701,
                Operation    = "additem",
                Value        = payload
            };


            using (PublicGatewayWebSocketClient websocketClient = new PublicGatewayWebSocketClient())
            {
                var b = websocketClient.ConnectAsync(url).Result;
                for (int i = 0; i < 3; i++)
                {
                    WsResponseMessage mresp  = websocketClient.SendReceiveAsync(mreq, CancellationToken.None).Result;
                    PostProductModel  result = serializer.DeserializeAsync <PostProductModel>(mresp.Value).Result;
                }
            }

            Console.ReadKey();
        }
Example #2
0
        /// <summary>
        /// IWebSocketListener.ProcessWsMessageAsync
        /// </summary>
        public async Task <byte[]> ProcessWsMessageAsync(byte[] wsrequest, CancellationToken cancellationToken)
        {
            Logger.Debug(nameof(this.ProcessWsMessageAsync));

            ProtobufWsSerializer mserializer = new ProtobufWsSerializer();

            WsRequestMessage mrequest = await mserializer.DeserializeAsync <WsRequestMessage>(wsrequest);

            switch (mrequest.Operation)
            {
            case WSOperations.AddItem:
            {
                IWsSerializer    pserializer = SerializerFactory.CreateSerializer();
                PostProductModel payload     = await pserializer.DeserializeAsync <PostProductModel>(mrequest.Value);

                await this.PurchaseProduct(payload.ProductId, payload.Quantity);
            }
            break;
            }

            WsResponseMessage mresponse = new WsResponseMessage
            {
                Result = WsResult.Success
            };

            return(await mserializer.SerializeAsync(mresponse));
        }
Example #3
0
        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));
        }
Example #4
0
        /// <summary>
        /// IWebSocketListener.ProcessWsMessageAsync 消息分发过来进行处理
        /// </summary>
        public async Task <byte[]> ProcessWsMessageAsync(byte[] wsrequest, CancellationToken cancellationToken)
        {
            Logger.Debug(nameof(this.ProcessWsMessageAsync));

            ProtobufWsSerializer mserializer = new ProtobufWsSerializer();

            WsRequestMessage mrequest = await mserializer.DeserializeAsync <WsRequestMessage>(wsrequest);

            ///事件集中在这里处理  并且可以保存状态
            switch (mrequest.Operation)
            {
            case WSOperations.AddItem:
            {
                IWsSerializer    pserializer = SerializerFactory.CreateSerializer();
                PostProductModel payload     = await pserializer.DeserializeAsync <PostProductModel>(mrequest.Value); //取值

                await this.PurchaseProduct(payload.ProductId, payload.Quantity);                                      //数据处理
            }
            break;
            }

            PostProductModel m = new PostProductModel();

            m.ProductId = 100;
            m.Quantity  = 200;
            var m1 = await mserializer.SerializeAsync(m);

            //构造返回值
            WsResponseMessage mresponse = new WsResponseMessage
            {
                Result = WsResult.Success,
                Value  = m1
            };

            return(await mserializer.SerializeAsync(mresponse));
        }