public void AddInterval(int interval) { var pipeline = _channel.Pipeline; var idleHandle = new IdleStateHandler(0, interval, 0); pipeline.AddBefore("device", "idle", idleHandle); }
public async Task Start() { var bootstrap = new Bootstrap(); var workers = new MultithreadEventLoopGroup(); try { bootstrap.Group(workers) .Channel <TcpSocketChannel>() .Handler(new ActionChannelInitializer <ISocketChannel>(ch => { var pipeline = ch.Pipeline; pipeline.AddLast("split", new FrameSplitDecoder()); if (HeartbeatSwitch != null && HeartbeatSwitch) { var idleHandle = new IdleStateHandler(0, Interval, 0); pipeline.AddLast("idle", idleHandle); } pipeline.AddLast("device", Device); })); var addr = IPAddress.Parse(Host); var endPoint = new IPEndPoint(addr, Port); _channel = await bootstrap.ConnectAsync(endPoint); Console.WriteLine($"client started, connect to : {endPoint}"); Console.ReadLine(); } catch (Exception e) { await Task.WhenAll(workers.ShutdownGracefullyAsync(TimeSpan.FromMilliseconds(100), TimeSpan.FromSeconds(1))); } }