public override void ChannelRead(IChannelHandlerContext context, object message) { var jT808RequestInfo = (JT808RequestInfo)message; SourcePackageDispatcher?.SendAsync(jT808RequestInfo.OriginalBuffer); string receive = string.Empty; try { if (logger.IsEnabled(LogLevel.Debug)) { receive = jT808RequestInfo.OriginalBuffer.ToHexString(); } Func <JT808RequestInfo, IChannelHandlerContext, IJT808Package> handlerFunc; if (jT808RequestInfo.JT808Package != null) { if (jT808MsgIdHandler.HandlerDict.TryGetValue(jT808RequestInfo.JT808Package.Header.MsgId, out handlerFunc)) { IJT808Package jT808PackageImpl = handlerFunc(jT808RequestInfo, context); if (jT808PackageImpl != null) { if (logger.IsEnabled(LogLevel.Debug)) { logger.LogDebug("send>>>" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JT808Serializer.Serialize(jT808PackageImpl.JT808Package).ToHexString()); //logger.LogDebug("send>>>" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JsonConvert.SerializeObject(jT808PackageImpl.JT808Package)); } // 需要注意: // 1.下发应答必须要在类中重写 ChannelReadComplete 不然客户端接收不到消息 // context.WriteAsync(Unpooled.WrappedBuffer(JT808Serializer.Serialize(jT808PackageImpl.JT808Package))); // 2.直接发送 context.WriteAndFlushAsync(Unpooled.WrappedBuffer(JT808Serializer.Serialize(jT808PackageImpl.JT808Package))); } } } } catch (JT808Exception ex) { if (logger.IsEnabled(LogLevel.Error)) { logger.LogError(ex, "JT808Exception receive<<<" + receive); } } catch (Exception ex) { if (logger.IsEnabled(LogLevel.Error)) { logger.LogError(ex, "Exception receive<<<" + receive); } } }
public override void ExecuteCommand(JT808Session <JT808RequestInfo> session, JT808RequestInfo requestInfo) { var JT808Server = (JT808Server)session.AppServer; JT808Server.SourcePackageDispatcher?.SendAsync(requestInfo.OriginalBuffer); if (requestInfo.JT808Package == null) { return; } JT808Server.DeviceMonitoringDispatcher?.SendAsync(requestInfo.JT808Package.Header.TerminalPhoneNo, requestInfo.OriginalBuffer); session.TerminalPhoneNo = requestInfo.JT808Package.Header.TerminalPhoneNo; string receive = requestInfo.OriginalBuffer.ToHexString(); //session.Logger.Debug("receive-" + receive); //session.Logger.Debug("receive-" + requestInfo.JT808Package.Header.MsgId.ToString() + "-" + JsonConvert.SerializeObject(requestInfo.JT808Package)); try { Func <JT808RequestInfo, JT808Session <JT808RequestInfo>, IJT808Package> handlerFunc; if (JT808Server.JT808MsgIdHandler.HandlerDict.TryGetValue(requestInfo.JT808Package.Header.MsgId, out handlerFunc)) { IJT808Package jT808PackageImpl = handlerFunc(requestInfo, session); if (jT808PackageImpl != null) { session.Logger.Debug("send-" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JT808Serializer.Serialize(jT808PackageImpl.JT808Package).ToHexString()); //session.Logger.Debug("send-" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JsonConvert.SerializeObject(jT808PackageImpl.JT808Package)); session.TrySend(jT808PackageImpl); } } } catch (JT808Exception ex) { session.Logger.Error("JT808Exception receive-" + receive); session.Logger.Error(ex.Message, ex); } catch (Exception ex) { session.Logger.Error("Exception receive-" + receive); session.Logger.Error(ex); } }
public bool TrySend(IJT808Package jT808Package) { byte[] sendData = JT808Serializer.Serialize(jT808Package.JT808Package); return(base.TrySend(sendData, 0, sendData.Length)); }