Пример #1
0
        public override void OnReceive(ISocketContext <CommandLineMessage> context, CommandLineMessage msg)
        {
            _logger.LogInformation("receive msg from {0},{1}", context.RemoteEndPoint, msg.Command);
            string replyMessage = string.Empty;
            string replyCmd     = string.Empty;

            switch (msg.Command)
            {
            case "echo":
                replyMessage = msg.Parameters[0];
                replyCmd     = "echo";
                break;

            case "init":
                replyMessage = "ok";
                replyCmd     = "init_reply";

                break;

            default:
                replyMessage = "error unknow command";
                break;
            }


            Task.Run(async() =>
            {
                await context.SendAsync(new CommandLineMessage(replyCmd, replyMessage));
            });
        }
Пример #2
0
        public override void OnReceive(ISocketContext <MqttMessage> context, MqttMessage msg)
        {
            this._logger.LogTrace("receive Packet from {0}", context.RemoteEndPoint);

            if (msg?.Packet == null)
            {
                this._logger.LogWarning("receive receive message from {0}, but packet is null", context.RemoteEndPoint);
                return;
            }

            Task.Run(
                async() =>
            {
                this._logger.LogDebug("receive Packet from {0}, type ={1}", context.RemoteEndPoint, msg.Packet.PacketType);

                MqttClientSession clientSession = this._sessionManager.GetClientSession(context, msg.Packet);

                IPacketProcessor processor = this._processorManager.GetProcessor(msg.Packet.PacketType);
                if (processor != null)
                {
                    MqttMessage rsp = await processor.ProcessAsync(clientSession, msg.Packet);
                    if (rsp != null)
                    {
                        if (rsp.Packet != null)
                        {
                            await context.SendAsync(rsp);
                        }

                        if (rsp.Code != 0)    //主动断开
                        {
                            await ShutdownChannel(context, msg.Packet);
                        }
                    }
                }
                else
                {
                    this._logger.LogWarning("PacketType:{0} has no processor", msg.Packet.PacketType);
                }
            }).ConfigureAwait(false);

            /*
             * switch (msg.Packet.PacketType)
             * {
             *  case  PacketType.CONNECT:
             *      Console.WriteLine("receive connect pack client_id = {0}",((ConnectPacket)msg.Packet).ClientId);
             *      var ack = new ConnAckPacket { ReturnCode = ConnectReturnCode.Accepted, SessionPresent = true};
             *      context.SendAsync(new MqttMessage { Packet =  ack});
             *      break;
             *  case PacketType.PINGREQ:
             *      context.SendAsync(new MqttMessage { Packet =   PingRespPacket.Instance});
             *      break;
             *  default:
             *      Console.WriteLine("receive Packet from {0}, type ={1}",context.RemoteEndPoint,msg.Packet.PacketType);
             *      break;
             *
             * }*/
        }
Пример #3
0
        public async Task ReceiveAsync(ISocketContext <AmpMessage> context, AmpMessage message)
        {
            AmpMessage response = new AmpMessage
            {
                InvokeMessageType = InvokeMessageType.Response,
                Code      = RpcErrorCodes.CODE_SERVICE_NOT_FOUND,
                ServiceId = message.ServiceId,
                MessageId = message.MessageId
            };

            response.Sequence = message.Sequence;
            await context.SendAsync(response);
        }
Пример #4
0
        public async Task SendAsync(EndPoint endPoint, TMessage message)
        {
            ISocketContext <TMessage> context = await ConnectAsync(endPoint);

            await context.SendAsync(message);
        }
Пример #5
0
 public Task ReceiveAsync(ISocketContext <AmpMessage> context, AmpMessage message)
 {
     message.InvokeMessageType = InvokeMessageType.Response;
     return(context.SendAsync(message));
 }