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)); }); }
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; * * }*/ }
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); }
public async Task SendAsync(EndPoint endPoint, TMessage message) { ISocketContext <TMessage> context = await ConnectAsync(endPoint); await context.SendAsync(message); }
public Task ReceiveAsync(ISocketContext <AmpMessage> context, AmpMessage message) { message.InvokeMessageType = InvokeMessageType.Response; return(context.SendAsync(message)); }